使用预准备语句的语句方法调用的正确顺序是什么?

时间:2011-07-21 16:57:55

标签: php prepared-statement

我想让我的数据库尽可能安全,我学到的一件事就是使用准备好的语句......这就是我正在做的事情。

我只需要确认以确保执行顺序正常。

以下是否有意义,或者我遗失了什么?

$sql = 'SELECT ...';
$conn = @ new mysqli($host, $user, $pwd, $db);

$stmt = $conn->stmt_init(); // initialize a prepared statement

$stmt->prepare($sql);
$stmt->bind_param('i', ...);
$stmt->bind_result(..., ..., ...);
$stmt->execute();

while ($stmt->fetch()) {
    ...
}

$stmt->free_result(); // free the database resources for other queries
$stmt->close(); // close statement
$conn->close(); //close the database connection

2 个答案:

答案 0 :(得分:0)

我会说你不需要致电stmt_init() - 至少,根据mysqli::prepare()

页面上的示例,它似乎没有必要

您可能还想查看:

答案 1 :(得分:0)

两个狡辩:

  1. 请勿使用@
  2. 来抑制错误
  3. 永远不要假设与DB相关的操作成功。始终检查错误情况,例如当您调用->prepare()时 - 您的SQL语句可能有语法错误,但您盲目地继续进行,就好像一切都完美无缺。实际的查询执行也是如此 - 您的查询可能在语法上100%正确,但由于外部原因而失败。