我是否需要声明要在 bind_result() 语句中使用的变量?
Do I need to Declare a Variable to be used in a bind_result() Statement?
当使用bind_result()
语句(referenced here)编写prepared语句并绑定结果时,考虑下面的例子,我是否需要声明$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 只是没有意识到这是 'okay' 这一事实,但我想确保我以正确的方式这样做。
它可能不容易理解,但是当你通过引用传递变量时 bind_result()
你实际上是在定义它们。您不需要事先声明它们。
你可以很容易地测试这个假设:
function test(mysqli $conn1){
$a = ""; //does this declaration need to happen?
$stmtGetData = $conn1->prepare("SELECT 1,2,3");
$stmtGetData->execute();
$stmtGetData->bind_result($a, $b, $c);
var_dump($a, $b, $c);
}
test($mysqli);
// Outputs the following with no warnings about undefined variables
// string(0) ""
// NULL
// NULL
Intelephense 告诉您这些变量未定义可能有几个原因:
- 您没有正确指定
mysqli
作为参数类型。检查命名空间或始终使用完全限定名称。
- 您拼错了
mysqli
对象变量名。真的$conn1
在你当前的范围内吗?
- 您使用的是非常旧的 Intelephense 版本。这种情况在很旧的版本中就有问题。检查更新。
当使用bind_result()
语句(referenced here)编写prepared语句并绑定结果时,考虑下面的例子,我是否需要声明$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 只是没有意识到这是 'okay' 这一事实,但我想确保我以正确的方式这样做。
它可能不容易理解,但是当你通过引用传递变量时 bind_result()
你实际上是在定义它们。您不需要事先声明它们。
你可以很容易地测试这个假设:
function test(mysqli $conn1){
$a = ""; //does this declaration need to happen?
$stmtGetData = $conn1->prepare("SELECT 1,2,3");
$stmtGetData->execute();
$stmtGetData->bind_result($a, $b, $c);
var_dump($a, $b, $c);
}
test($mysqli);
// Outputs the following with no warnings about undefined variables
// string(0) ""
// NULL
// NULL
Intelephense 告诉您这些变量未定义可能有几个原因:
- 您没有正确指定
mysqli
作为参数类型。检查命名空间或始终使用完全限定名称。 - 您拼错了
mysqli
对象变量名。真的$conn1
在你当前的范围内吗? - 您使用的是非常旧的 Intelephense 版本。这种情况在很旧的版本中就有问题。检查更新。