【问题标题】:PDO Query (insert and select) doesn't workPDO 查询(插入和选择)不起作用
【发布时间】:2017-03-14 14:35:02
【问题描述】:

我正在尝试将数据插入到我的数据库中,并且我想使用相同的准备好的语句来选择新插入行的 id。

因此我使用以下代码:

$stmt = $pdo->prepare("INSERT INTO questions (question) VALUES (:question1), (:question2); SELECT @@IDENTITY  as 'currentID';");

if ($stmt -> execute(array(":question1" => $_POST["question1"], ":question2" => $_POST["question2"]))) {
    $row = $stmt->fetch();
    echo $row["currentID"]; //doesn't output anything
    echo "hey"; //gets outputted
}

使用 phpMyAdmin 并在那里输入代码可以正常工作。但是使用我的 PHP 脚本,它会插入数据,但不会返回 currentID。 但我没有收到任何错误。

如果我尝试选择其他任何内容,则完全相同。

【问题讨论】:

标签: php mysql sql pdo


【解决方案1】:
$stmt = $pdo->prepare("INSERT INTO questions (question1, question2) VALUES (:question1), (:question2)");

if ($stmt -> execute(array(":question1" => $_POST["question1"], ":question2" => $_POST["question2"]))) {
    $id = $pdo->lastInsertID();
    echo $id;
}

从那里,您可以继续构建一个选择(SELECT * from question where id = $id 或其他任何您想做的事情

【讨论】:

  • 如果你要使用最后一个插入 ID,你就不需要这个 SELECT @@IDENTITY as 'currentID';
  • 谢谢,我不知道lastInsertID(),很好用。
【解决方案2】:

与数据库控制台不同,在 PHP 中,您对数据库一个一个运行查询。
所以你应该这样做:

$stmt = $pdo->prepare("INSERT INTO questions (question) VALUES (:question1), (:question2)");
$stmt -> execute(array(":question1" => $_POST["question1"], ":question2" => $_POST["question2"]));

$stmt = $pdo->query("SELECT @@IDENTITY  as 'currentID'");
$row = $stmt->fetch();
echo $row["currentID"];

你应该做同样的事情来尝试选择其他任何东西。

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2014-01-12
    • 1970-01-01
    • 2020-02-25
    • 2019-09-07
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多