当前位置: 首页 > 面试题库 >

相当于mysql_insert_id(); 使用准备好的语句?

皇甫飞飙
2023-03-14
问题内容

我已经使用prepared语句将订单插入到订单表中,但是现在我想根据订单表中插入的最后一个ID将订单项插入到订单表中:

if (isset($_POST['process'])) {

    $order_name = $_POST['order_name'];
    //create initial order
    $stmt = $conn2->prepare("INSERT INTO orders (order_name) VALUES (?)");
    $stmt->bind_param('s', $order_name);
    $stmt->execute();

    //this gets the most recent auto incremented ID from the database - this is the order_id we have just created
    $order_id = mysql_insert_id();

    //loop over all of our order items and add to the database
    foreach ($_SESSION['order'] as $item) {

等同于mysql_insert_id();使用准备好的语句?


问题答案:

如果您使用的是PDO,则为PDO::lastInsertId()。因此,如果您的数据库句柄称为$link

$order_id = $link->lastInsertId();

如果您使用的是MySQLi,则为mysqli::$insert_idmysqli_insert_id()

$order_id = $link->insert_id;


 类似资料:
  • 其思想是创建一个准备好的语句将信息插入到用户表中,然后从生成的内容中获取insert_id以在另一个insert语句中使用 这是我的注册脚本的一个版本 第一条准备好的语句正确运行并向表中插入信息,之后成功回显$RETURNID变量。脚本中的下一个是我准备好的第二条语句,当它试图运行im时,得到的错误是: 致命错误:对第17行d:\filepath\register.php中的非对象调用成员函数bi

  • 我有一个将列名映射到值的。要更新的列事先未知,在运行时决定。 例如< code>map = {col1: "value1 ",col2: "value2"}。 我想执行一个< code>UPDATE查询,用这些列将表更新为相应的值。我能做以下事情吗?如果没有,有没有一种优雅的方法可以不用手动构建查询?

  • 所以我的PHP代码遇到了问题,我试图运行两个准备好的语句,这两个语句都是用相同的$mysqli对象“prepared”的。 我可能错过了什么;你能同时运行两个吗?如有任何帮助,我们将不胜感激!如有任何问题,请询问;)

  • 我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?

  • 问题内容: 我想知道是否仍然可以使用准备好的语句指定返回的列名称。 我正在使用MySQL和Java。 当我尝试时: 我得到了这种类型的语句(在执行之前立即打印)。 但我希望看到: 我知道,我不能为表名这样做,因为讨论 这里,但不知道是否有一些方法来做到这一点对列名。 如果没有,那么我只需要尝试确保对输入进行清理,以免导致SQL注入漏洞。 问题答案: 这表明数据库设计不正确。用户不需要知道列名。创建