#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());