我试图从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();
}
为什么这些没有分配给变量?
这不起作用,因为您正试图从$email和$$colnam 中获取值
bind_result将需要由查询中的数据填充的所有变量作为params。因此,在您的声明中,您有$z和$name,但您不调用它们。
您必须将$z的值分配给$to_email,并将$name的值分配到$oldvalue,就像这个一样
while ($stmt1->fetch()) {
$to_email = $z;
$oldvalue = $name;
}
请注意,$$colnam是PHP中var的动态调用。如果您有以下代码:
$message = 'hi!';
$burger = 'message';
echo $$burger;
它将输出"嗨!"因为它将读取$burger的值,即"message"并动态调用$message
您已将这两列绑定到$z
和$name
,但随后尝试通过$email
和$$colnam
访问它们。
使用您绑定到的变量:
while($stmt1->fetch()) {
$to_email = $z;
$oldvalue = $name;
}