我是PHP的新手,并且准备了SQL语句,阅读文档时遇到了一个问题。
函数'mysqli.prepare'在执行时返回布尔值。根据文档:
mysqli_prepare()
返回一个语句对象,如果发生错误则返回FALSE。
这不是对返回值的非常详细的描述。我的意思是,它什么时候完全失败?仅当SQL语法不正确时?或者,当我们尝试执行它并且由于其他任何原因而无法工作时(我最后的假设基于文档中显示的示例,其中几乎所有脚本都包含在if
语句中)
基于此,我还有第二个问题:与mysqli_prepare()
一起运行if
是一种好习惯吗?还是应该在以后运行if
函数时编写$stmt->execute();
语句?
谢谢!
答案 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的错误。