我想让我的数据库尽可能安全,我学到的一件事就是使用准备好的语句......这就是我正在做的事情。
我只需要确认以确保执行顺序正常。
以下是否有意义,或者我遗失了什么?
$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
答案 0 :(得分:0)
我会说你不需要致电stmt_init()
- 至少,根据mysqli::prepare()
您可能还想查看:
mysqli::__construct()
页面上的示例,使用mysqli::connect_error
。mysqli::prepare()
的返回值mysqli_stmt::execute()
答案 1 :(得分:0)
两个狡辩:
@
->prepare()
时 - 您的SQL语句可能有语法错误,但您盲目地继续进行,就好像一切都完美无缺。实际的查询执行也是如此 - 您的查询可能在语法上100%正确,但由于外部原因而失败。