当我想将html表单中的新数据插入多个表时,我有一个使用mysql_insert_id
函数的问题?
我正在使用的形式是:
<form method="POST" action="insert.php">
<table>
<tr>
<td>Room</td>
<td>
<select name="room">
<?php
openDB();
$sql = "SELECT room_id, name FROM room";
$rs = executeDB($sql);
while(list($room_id, $name) = mysql_fetch_array($rs)) {
echo "<option value='$room_id'>$name</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Product</td>
<td>
<select name="product">
<?php
openDB();
$sql = "SELECT product_id, name FROM product";
$rs = executeDB($sql);
while(list($product_id, $name) = mysql_fetch_array($rs)) {
echo "<option value='$product_id'>$name</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Quantity</td>
<td>
<?php
openDB();
$sql = "SELECT quantity FROM items_order";
$rs = executeDB($sql);
while(list($quantity ) = mysql_fetch_array($rs)) {
echo " <input type='number' name='quantity []' min='1' max='4'/></td>";
}
?>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit"/>
</td>
</tr>
</table>
</form>
然后输入这些变量:
if(isset($_POST['user'])) {
$user= $_POST['user'];
$room_id = $_POST['room_id'];
$product_id = $_POST['product_id'];
$quantity= $_POST['quantity'];
$status = 0; // if it's payed or not, if it is status= 1 else status = 0
以下是代码:
$sql = "INSERT INTO order (status, room_id, user_id) VALUES ('$status','$room_id','$user_id')";
$rs = mysql_query($sql);
$newid = mysql_insert_id();
$sql2 ="INSERT INTO items_order VALUES ('$newid ','$product_id','$quantity')";
$rs = mysql_query($sql2);
它不起作用。
我拥有的表格; order,items_order,product,订单有order_id主键为自动增量, items_order有两个主键:order_id, 和product_id因为它们是外键,房间有room_id,产品有product_id, 订单表中的外键是user_id,room_id,for。 我是否必须使用该功能输入新数据? 最重要的是,我错误的是这段代码不起作用? 请帮忙。
答案 0 :(得分:-1)
我很确定PHP不使用字符串插值,因此您在程序代码中看到的字符串实际上是它试图给MySQL的字符串。显然这不起作用。
执行此操作的正确方法是使用准备好的查询,您可以以安全的方式替换参数。你正在做的只是一个SQL注入攻击的邀请。当然,PHP的旧MySQL扩展不支持这些,这就是为什么它被弃用并计划很快删除的原因。所以你不应该使用它。
请点击此链接及其说明,了解使用PHP访问MySQL的正确方法: