[英]How to store a single column of a single row out of a MySQLi prepared statement in a PHP variable?
我对 PHP 和 MySQL 非常陌生,我正在寻找一种解决方案,使用准备好的语句将数据库行的单个值存储在变量中。
现在这是准备好的语句和执行:
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
我尝试了get_result()
、 fetch()
、 fetch_object()
,但我没有想法和谷歌搜索结果。
您需要将结果与特定变量的绑定添加到您的代码中
$emailsql->bind_result($emailResult);
你去取它:
while($emailsql->fetch()){
printf ($emailResult);
}
所以应该是这样:
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
$emailsql->bind_result($emailResult);
while($emailsql->fetch()){
printf ($emailResult);
}
如果您需要循环外的变量,我会采用这种方法:
$theEmail;
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
$emailsql->bind_result($emailResult);
while($emailsql->fetch()){
$theEmail=$emailResult;
}
请注意,您需要一个数组才能查询多封电子邮件。
@YourCommonSense 建议的另一种更清洁的方法是避免循环,如下所示:
$theEmail;
$emailsql = $conn->prepare("SELECT email FROM User WHERE email = ? limit 1;");
$emailsql->bind_param('s', $email);
$emailsql->execute();
$emailsql->bind_result($emailResult);
$emailsql->fetch();
printf($emailResult);
有两种方法。 另一个答案中解释的绑定结果方式,或者获取常规数组的传统方法
$stmt = $conn->prepare("SELECT 1 FROM User WHERE email = ?;");
$stmt->bind_param('s', $email);
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_row();
$value = $row ? $row[0] : null;
鉴于所有这些,您可能会考虑与 PDO 相比mysqli 的可用性有多差:
$stmt = $conn->prepare("SELECT 1 FROM User WHERE email = ? limit 1;");
$stmt->execute([$email]);
$value = $stmt->fetchColumn();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.