使用预准备语句从数据库中检索结果

时间:2015-05-27 01:39:14

标签: php mysqli prepared-statement associative-array

我刚开始使用PHP编写的语句,并认为我开始理解它们。但是,我遇到以下代码的主要问题,这表明我的理解并不像我想象的那么彻底。我尝试了很多变化,但我仍然会遇到致命的错误。

基本上,我使用预准备语句将数据插入数据库。这一点工作得很好。然后,我想要检索最新插入的记录以显示给用户,以便他们可以检查一切正常。数据库可能会定期更新,并且可能会根据需要将新列添加到表中。因此,我不想将bind_result()绑定到规定的变量列表,而是想要检索一个可以循环执行的关联数组。下面给出了代码的简化版本(没有错误检查):

DX(1:4)

当我尝试运行上面的php脚本时,我收到如下致命错误:

DX(1:5)

在几个站点上建议在结果上使用get_result()后跟fetch_array(MYSQLI_ASSOC),但它似乎对我不起作用。我是否巧妙地改变了背景而没有意识到它?任何关于我出错的建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的代码应按此顺序排列。

// Get ID number of latest inserted data...
$LatestInsertID = $db->insert_id;

// Retrieve recently installed data...
$EnteredDataStmt = $db->prepare("SELECT * FROM correspondence where id = ?")
$EnteredDataStmt->bind_param('i', $LatestInsertID)

否则$LatestInsertID不存在绑定。您还需要实现错误处理,因为您的致命错误是由于查询失败但您没有看到它而引起的。

$EnteredDataStmt->execute();
if (!$EnteredDataStmt) {
    print $EnteredDataStmt->error;
    exit;
}