我正在尝试使用一个表单在2个表中插入数据。
这是我的表格
<form action="don.php" method="post">
<tr><td>
<p>
<label for="nume">Nume:</label></td>
<td><input type="text" name="nume" id="nume" autocomplete="off"></td>
</p>
</tr>
<tr><td>
<p>
<label for="prenume">Prenume:</label></td>
<td> <input type="text" name="prenume" id="prenume" autocomplete="off"></td>
</p></tr>
<tr><td>
<p>
<label for="grupa">Numar telefon:</label></td>
<td><input type="text" name="numar" id="numar" autocomplete="off"></td>
</p></tr>
<tr><td>
<p>
<label for="grupa">Suma:</label></td>
<td><input type="text" name="suma" id="suma" autocomplete="off"></td>
</p></tr>
<tr><td>
<p>
<label for="grupa">Data:</label></td>
<td><input type="text" name="data" id="data" autocomplete="off"></td>
</p></tr>
<tr><td>
<p>
<label for="grupa">IBAN:</label></td>
<td><input type="text" name="iban" id="iban" autocomplete="off"></td>
</p></tr>
<tr><td><input type="submit" name="submit" value="Donează" onclick="alert('Operatiune finalizata cu succes. Va multumim!')"></td>
</form>
这是我的PHP代码
<?php
if(isset($_POST['submit'])){
$con=mysql_connect("localhost","root","");
if(!$con)
{
die("Nu se poate face conexiunea la baza de date" . mysql_error());
}
mysql_select_db("laborator",$con);
$sql="INSERT INTO donator (nume, prenume, numar_telefon) VALUES ('$_POST[nume]','$_POST[prenume]','$_POST[numar]')";
$sql="INSERT INTO donatie (suma, data_donatie, IBAN) VALUES ('$_POST[suma]','$_POST[data]','$_POST[iban]')";
mysql_query($sql,$con);
mysql_close($con);
}
?>
当我按下提交按钮时,它会向我显示我的日期已插入的提醒,但只有第二个INSERT
有效。表donator
为空。
我该怎么做才能解决这个问题?
答案 0 :(得分:9)
您必须为每个查询调用mysql_query()
。
$sql1 = "INSERT INTO donator ...";
$sql2 = "INSERT INTO donatie ...";
mysql_query($sql1, $con);
mysql_query($sql2, $con);
重要强>
mysql_query()
已被弃用!请使用mysqli_query()
http://php.net/manual/de/book.mysqli.php
您还可以使用mysqli_multi_query()
http://php.net/manual/de/mysqli.multi-query.php
$query = "INSERT INTO donator ...; INSERT INTO donatie ...;";
mysqli_multi_query($link, $query);
答案 1 :(得分:0)
您使用相同的变量$sql
运行查询。你应该像这样不同地打电话给他们并在之后给他们打电话。
$sql="INSERT INTO donator (nume, prenume, numar_telefon) VALUES ('mysql_real_escape_string($_POST[nume])','mysql_real_escape_string($_POST[prenume])','mysql_real_escape_string($_POST[numar])')";
$sql2="INSERT INTO donatie (suma, data_donatie, IBAN) VALUES ('mysql_real_escape_string($_POST[suma])','mysql_real_escape_string($_POST[data])','mysql_real_escape_string($_POST[iban])')";
否则,您必须通过保护它们来更改帖子值。 Refer here
然后,你必须切换到PHP的新mysql语法,如mysqli或PDO。您正在使用的mysql语法已弃用。
答案 2 :(得分:0)
您正在覆盖您的$ sql变量。将它们保存为单独的变量,或在声明第二个查询之前运行第一个查询。
那就是说,你应该真的考虑为你的查询而不是mysql扩展转换两个PDO或mysqli,还要查看准备好的语句并正确清理字符串,因为你很容易被sql注入。
答案 3 :(得分:0)
像这样使用它会完美地运作。
$_SESSION
答案 4 :(得分:0)
这是为多个表插入一个表单数据的示例。
此处html表单具有一个提交按钮。 “确定”的名称是提交按钮的名称。
<?php
ob_start();
session_start();
$con=mysqli_connect("localhost","root","","cultureframework");
if(mysqli_connect_errno())
{
echo "Failed to connect to MySql:".mysqli_connect_error();
}
?>
<?php
if(isset($_POST['ok']))
{
$ip=$_POST['ip'];
$date=$_POST['date'];
$gender=$_POST['gender'];
$age=$_POST['age'];
$tenure=$_POST['tenure'];
//-------------------------------------
$caring_past_1=$_POST['caring_past_1'];
$caring_present_1=$_POST['caring_present_1'];
$caring_future_1=$_POST['caring_future_1'];
$caring_past_2=$_POST['caring_past_2'];
$caring_present_2=$_POST['caring_present_2'];
$caring_future_2=$_POST['caring_future_2'];
//-------------------------------------
$insert="INSERT INTO `generalinfo`(`ip`,`datez`,`gender`,`age`,`tenure`) VALUES('$ip','$date','$gender','$age','$tenure')";
$query=mysqli_query($con,$insert);
$ins="INSERT INTO `caring`(`caring_past_1`,`caring_present_1`,`caring_future_1`,`caring_past_2`,
`caring_present_2`,`caring_future_2`) VALUES('$caring_past_1','$caring_present_1','$caring_future_1','$caring_past_2','$caring_present_2','$caring_future_2')";
$quy=mysqli_query($con,$ins);
}
?>