使用mysql_insert_id函数

时间:2013-08-21 14:49:09

标签: php mysql insert

当我想将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。 我是否必须使用该功能输入新数据? 最重要的是,我错误的是这段代码不起作用? 请帮忙。

1 个答案:

答案 0 :(得分:-1)

我很确定PHP不使用字符串插值,因此您在程序代码中看到的字符串实际上是它试图给MySQL的字符串。显然这不起作用。

执行此操作的正确方法是使用准备好的查询,您可以以安全的方式替换参数。你正在做的只是一个SQL注入攻击的邀请。当然,PHP的旧MySQL扩展不支持这些,这就是为什么它被弃用并计划很快删除的原因。所以你不应该使用它。

请点击此链接及其说明,了解使用PHP访问MySQL的正确方法:

http://us3.php.net/manual/en/mysqlinfo.api.choosing.php