当编写预准备语句并使用bind_result()
语句绑定结果时(此处引用),考虑下面的示例,在语句中绑定之前,我是否需要声明$a
、$b
或$c
?
$a = ""; //does this declaration need to happen?
$stmtGetData = $conn1->prepare("SELECT a, b, c FROM myTable");
$stmtGetData->execute();
$stmtGetData->bind_result($a, $b, $c);
$stmtGetData->fetch();
$stmtGetData->close();
无论变量是否在bind_result()
之前声明,代码似乎都可以正常工作。虽然上面引用的PHP文档没有显示声明的变量,但如果没有,Intelephense会显示Undefined variable
异常。
我的印象是,Intelephense只是没有意识到这是“好的”,但我想确保我这样做是正确的方式。
1条答案
按热度按时间zte4gxcn1#
这可能不容易理解,但是当你通过引用
bind_result()
传递变量时,你实际上是在定义它们,你不需要事先声明它们。你可以很容易地检验这个假设:
如果变量
$b
和$c
未定义,则在尝试使用var_dump
时会出现get a warning。Demo online.
Intelephense告诉你这些变量是未定义的可能有几个原因:
1.未正确指定
mysqli
作为参数类型。请检查命名空间或始终使用完全限定名。1.您拼错了
mysqli
对象变量名。它确实在当前作用域中吗?1.您使用的是非常旧的Intelephense版本。在非常旧的版本中出现了此情况。请检查更新。