如何在mysqli中将COUNT(*)的查询结果存储到变量中
嘿,我看到你在尝试把COUNT(*)的查询结果存到变量里用来做判断,你的代码现在有个关键问题:mysqli_query()执行后返回的是MySQL结果集对象,不是直接的计数数值,所以直接拿$query >= '1'做判断是完全不生效的——你这是在把对象和字符串做比较,这个条件永远不会成立。
正确的实现方式
你需要先从结果集里提取出COUNT(*)的具体数值,再进行判断:
// 执行查询(先提醒下:直接把变量拼进SQL有注入风险,后面会说更安全的写法) $query = mysqli_query($mysqli, "SELECT COUNT(*) FROM appointment WHERE date = '$date_convert' and appointment_time = '$appointment_time'"); // 从结果集中取出计数结果——mysqli_fetch_row会返回一行数据的数组,取第一个元素就是COUNT的值 $count = mysqli_fetch_row($query)[0]; // 现在可以正常判断了 if ($count >= 1) { echo "Don't Continue"; } else { echo "Continue"; }
更安全的写法(强烈推荐)
如果$date_convert和$appointment_time是来自用户输入的内容,直接拼进SQL语句会有SQL注入的风险,所以一定要用预处理语句:
// 准备预处理语句,用?作为占位符 $stmt = mysqli_prepare($mysqli, "SELECT COUNT(*) FROM appointment WHERE date = ? AND appointment_time = ?"); // 绑定参数:"ss"表示两个参数都是字符串类型,如果你的字段是日期类型也可以用s,根据实际情况调整 mysqli_stmt_bind_param($stmt, "ss", $date_convert, $appointment_time); // 执行语句 mysqli_stmt_execute($stmt); // 把查询结果绑定到$count变量上 mysqli_stmt_bind_result($stmt, $count); // 获取结果 mysqli_stmt_fetch($stmt); // 进行判断逻辑 if ($count >= 1) { echo "Don't Continue"; } else { echo "Continue"; } // 记得关闭预处理语句 mysqli_stmt_close($stmt);
这样既解决了你的判断问题,又保证了代码的安全性~
内容的提问来源于stack exchange,提问作者Adrian Paul Pascua
相关产品推荐
相关产品推荐

