PHP函数“ mysqli_prepare”的输出是什么意思

时间:2018-10-07 10:43:40

标签: php prepared-statement

我是PHP的新手,并且准备了SQL语句,阅读文档时遇到了一个问题。

函数'mysqli.prepare'在执行时返回布尔值。根据文档:

  

mysqli_prepare()返回一个语句对象,如果发生错误则返回FALSE。

这不是对返回值的非常详细的描述。我的意思是,它什么时候完全失败?仅当SQL语法不正确时?或者,当我们尝试执行它并且由于其他任何原因而无法工作时(我最后的假设基于文档中显示的示例,其中几乎所有脚本都包含在if语句中)

基于此,我还有第二个问题:与mysqli_prepare()一起运行if是一种好习惯吗?还是应该在以后运行if函数时编写$stmt->execute();语句?

谢谢!

1 个答案:

答案 0 :(得分:1)

查询失败的原因太多。但是当查询失败时,您会收到带有mysqli_error()mysqli_errno()的错误消息。当查询失败时,mysqli_prepare()函数将返回FALSE(而不是MySQLi准备的语句对象)以指示存在错误。您必须使用if()语句检查返回值以处理这种情况。如果不检查它并尝试运行$stmt->execute();,则会收到一个错误,提示您无法对布尔值(值execute())运行false方法。

对于第二个问题:您必须检查mysqli_prepare()的返回值,并且必须检查mysqli_stmt_execute()的返回值。您无法跳过检查,否则会出现类似mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc... expects parameter 1 to be resource的错误。