Php mysqli bind()变量预先初始化

Php mysqli bind()变量预先初始化,php,mysqli,Php,Mysqli,我偶然发现了这个教程 编写了以下内容:选择变量并预先初始化它们: $rowId = 0; $rowFirstName = ''; $rowLastName = ''; $rowAge = 0; $statement->bind_result($rowId,$rowFirstName,$rowLastName,$rowAge); 像本例中那样预先初始化和只绑定结果而不初始化之间有区别吗 $statement->bind_result($rowId,$rowFirstName,$row

我偶然发现了这个教程 编写了以下内容:选择变量并预先初始化它们:

$rowId = 0;
$rowFirstName = '';
$rowLastName = '';
$rowAge = 0;
$statement->bind_result($rowId,$rowFirstName,$rowLastName,$rowAge);
像本例中那样预先初始化和只绑定结果而不初始化之间有区别吗

$statement->bind_result($rowId,$rowFirstName,$rowLastName,$rowAge);

要回答你的问题。。。否。通过引用传递变量没有区别(因为它们在
mysqli_stmt::bind_result()
中隐式定义它们)

考虑这个简单的例子

class Foo {
    public function __construct(&$foo) { }
}

$foo = new Foo($bar);

var_dump(get_defined_vars());
// amongst all the noise, you will find "bar" with value NULL

Demo ~

是的-如果它们没有从您的查询结果中设置,那么当您稍后尝试使用它们时,它们将保持未定义状态。考虑到它的年龄,这是一个非常好的教程。我总是以“我正在遵循此教程(2年多前编写的)…”开始假设最糟糕的问题@一般来说,这可能是正确的,但查询中的典型结果集最多会定义变量并将其赋值为null。最坏的情况下会抛出一个通知/错误/警告