вставка в 2 таблицы из одного кода формы создает проблему —-пожалуйста, помогите

#php #mysql

#php #mysql

Вопрос:

У меня есть веб-форма, из которой я хочу, чтобы записи отправлялись в две таблицы с одинаковым именем базы данных.

Мой код

 <?php
$con = mysql_connect("localhost","************","***********");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$db=mysql_select_db("qserves1_uksurvey", $con);

    $sql="INSERT INTO forms (date, Receivingsky, Title, Firstname, Lastname, House, Street, Town, County, Postcode, Number, WarrantyCoverForSky, Tvmake, Warrantycover, Payingmonthly, Agentnotes, Agentname)
VALUES
(NOW(),'$_POST[Receivingsky]','$_POST[Title]','$_POST[Firstname]','$_POST[Lastname]','$_POST[House]','$_POST[Street]','$_POST[Town]','$_POST[County]','$_POST[Postcode]','$_POST[Number]','$_POST[WarrantyCoverForSky]','$_POST[Tvmake]','$_POST[Warrantycover]','$_POST[Payingmonthly]','$_POST[Agentnotes]','$_POST[Agentname]')";
$sql_result = mysql_query($sql, $con) or die (mysql_error());

$con2 = mysql_connect("localhost","*******8","*********8");
if (!$con2)
  {
  die('Could not connect: ' . mysql_error());
  }

$db2=mysql_select_db("qserves1_uksurvey", $con2);

$sql2="INSERT INTO dupphones (date, Number)
Values
(NOW(),'$_POST[Number]')";
$sql_result = mysql_query($sql2, $con2) or die (mysql_error());

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo '<html>
<head>
<title>Lead Submitted successfully!!!</title>
</head>
<body>
<center>
<strong><a href="http://q2serves.com/uksurvey.html">Lead Submitted ---- Click Here To Enter New Lead</a></strong>
</center>
</body>
</html>!'; 

mysql_close($con)
?>
  

Это отправка 3-х запросов, 1 из которых находится в двойных таблицах, а 2 — в табличных формах.

Я хочу, чтобы это отправляло только 1 вывод в каждую таблицу.

Пожалуйста, помогите

Спасибо

Комментарии:

1. Почему вы создаете два подключения к одной и той же базе данных? Вы также выполняете mysql_query множество раз, иногда с $ sql2, затем снова с $ sql.

2. Всего несколько слов совета. Очистите ваши данные $ _POST перед отправкой. И рассмотрите возможность использования первичного ключа. Кроме того, почему вы устанавливаете новое соединение для выполнения второго запроса?

Ответ №1:

Вы создаете два подключения к одной и той же базе данных. Вы также выполняете mysql_query множество раз, иногда с $ sql2, затем снова с $ sql. Чтобы немного прояснить ваш код, вот как это могло бы выглядеть:

 <?php
$con = mysql_connect("localhost","************","***********");
if (!$con) 
{
   die('Could not connect: ' . mysql_error());
}

$db=mysql_select_db("qserves1_uksurvey", $con);

$sql="INSERT INTO forms (date, Receivingsky, Title, Firstname, Lastname, House, Street, Town, County, Postcode, Number, WarrantyCoverForSky, Tvmake, Warrantycover, Payingmonthly, Agentnotes, Agentname)
VALUES
(NOW(),'$_POST[Receivingsky]','$_POST[Title]','$_POST[Firstname]',
'$_POST[Lastname]','$_POST[House]','$_POST[Street]','$_POST[Town]','$_POST[County]',
'$_POST[Postcode]','$_POST[Number]','$_POST[WarrantyCoverForSky]','$_POST[Tvmake]',
'$_POST[Warrantycover]','$_POST[Payingmonthly]','$_POST[Agentnotes]',
'$_POST[Agentname]')";
 $sql_result = mysql_query($sql, $con) or die (mysql_error());

 $sql2="INSERT INTO dupphones (date, Number)
 Values
 (NOW(),'$_POST[Number]')";
 $sql_result = mysql_query($sql2, $con2) or die (mysql_error());

echo '<html>
<head>
  

Обратите внимание, что ваши запросы по-прежнему уязвимы для внедрения sql. Используйте экранирующие или подготовленные инструкции, чтобы избавиться от sql-инъекции.

Ответ №2:

Всего несколько слов совета. Очистите ваши данные $ _POST перед отправкой. И рассмотрите возможность использования первичного ключа. Кроме того, почему вы устанавливаете новое соединение для выполнения второго запроса?

По крайней мере, используйте mysql_real_escape()

Вы получаете два запроса, потому что вы делаете

   if (!mysql_query($sql,$con)) {
  die('Error: ' . mysql_error());
  }
  

Который снова запускает запрос. Вы уже запускали его один раз сверху

 $sql_result = mysql_query($sql, $con) or die (mysql_error());