我如何分配面向对象的 Mysqli 准备语句的结果
How Can I Assign the Results from Object Oriented Mysqli Prepared Statements
我正在尝试分配 mysqli 准备语句查询的结果,但我无法将结果分配给我的变量。我尝试了几种方法,并确认我的查询是 运行 并返回数据。
这是我尝试分配结果的方式:
if ( $stmt1 = $mysqli->prepare("SELECT `email`, a.`$colname`
FROM `li_appointments`.`li_appointments` AS a
LEFT JOIN `lidb_users`.`login_users` AS b ON a.`created_by` = b.`username`
WHERE a.`app_id` = ?
LIMIT 1;")) {
$stmt1->bind_param("s", $id);
$return1 = $stmt1->execute();
$stmt1->bind_result($z, $name);
while($stmt1->fetch()) {
$to_email = $email;
$oldvalue = $$colnam;
}
$stmt1->close();
}
为什么这些没有分配给变量?
您已将这两列绑定到 $z
和 $name
,但随后您尝试通过 $email
和 $$colnam
访问它们。
使用您绑定的变量:
while($stmt1->fetch()) {
$to_email = $z;
$oldvalue = $name;
}
这行不通,因为您正试图从 $email 和 $$colnam
获取值
bind_result 将需要由查询中的数据填充的所有变量作为参数。所以在你的声明中,你有 $z 和 $name 但你没有调用它们。
您必须将 $z 的值分配给 $to_email 并分配给 $oldvalue,即 $name 的值,如下所示
while ($stmt1->fetch()) {
$to_email = $z;
$oldvalue = $name;
}
请注意$$colnam是PHP中var的动态调用。
如果您有以下代码:
$message = 'hi!';
$burger = 'message';
echo $$burger;
它会输出 'hi!' 因为它会读取 $burger 的值 'message' 并动态调用 $message
我正在尝试分配 mysqli 准备语句查询的结果,但我无法将结果分配给我的变量。我尝试了几种方法,并确认我的查询是 运行 并返回数据。
这是我尝试分配结果的方式:
if ( $stmt1 = $mysqli->prepare("SELECT `email`, a.`$colname`
FROM `li_appointments`.`li_appointments` AS a
LEFT JOIN `lidb_users`.`login_users` AS b ON a.`created_by` = b.`username`
WHERE a.`app_id` = ?
LIMIT 1;")) {
$stmt1->bind_param("s", $id);
$return1 = $stmt1->execute();
$stmt1->bind_result($z, $name);
while($stmt1->fetch()) {
$to_email = $email;
$oldvalue = $$colnam;
}
$stmt1->close();
}
为什么这些没有分配给变量?
您已将这两列绑定到 $z
和 $name
,但随后您尝试通过 $email
和 $$colnam
访问它们。
使用您绑定的变量:
while($stmt1->fetch()) {
$to_email = $z;
$oldvalue = $name;
}
这行不通,因为您正试图从 $email 和 $$colnam
获取值bind_result 将需要由查询中的数据填充的所有变量作为参数。所以在你的声明中,你有 $z 和 $name 但你没有调用它们。
您必须将 $z 的值分配给 $to_email 并分配给 $oldvalue,即 $name 的值,如下所示
while ($stmt1->fetch()) {
$to_email = $z;
$oldvalue = $name;
}
请注意$$colnam是PHP中var的动态调用。 如果您有以下代码:
$message = 'hi!';
$burger = 'message';
echo $$burger;
它会输出 'hi!' 因为它会读取 $burger 的值 'message' 并动态调用 $message