我正在对我以前尝试用来计算行的查询进行故障排除,但现在我发现在数据库中找到了0行,即使它们存在。我已经检查了我以前使用的查询,它们的工作和看起来一样。 $ db_conx肯定可以连接到数据库,因为我在其他网页上使用它。有没有人有什么建议?感谢
$result =("SELECT * FROM Request WHERE user2='joey' AND accepted='0'");
$query = mysqli_query($db_conx, $result);
$rows = mysqli_num_rows($query);
if (rows < 1) {
echo '<strong style="color:#F00;">No rows</strong>';
exit();
} else {
echo '<strong style="color:#F00;">Rows exist</strong>';
exit();
}
答案 0 :(得分:2)
您错过了从数据库select
获取内容的重要一步,这就是您尝试select
的内容。而且,您也错过了$
中的rows
。
$result =("SELECT something FROM Request WHERE user2='joey' AND accepted='0'");
$query = mysqli_query($db_conx, $result);
$rows = mysqli_num_rows($query);
if ($rows < 1) {
echo '<strong style="color:#F00;">No rows</strong>';
exit();
} else {
echo '<strong style="color:#F00;">Rows exist</strong>';
exit();
}
答案 1 :(得分:1)
您修改了原始帖子https://stackoverflow.com/revisions/33307758/1
是SELECT FROM Request
您从查询中选择了“无”
SELECT FROM ...
阅读SELECT上的手册:
此if (rows < 1) {
- rows
被视为constant而不是变量。
Error reporting会告诉你,如果它被设置为捕获并显示在你的系统上。
if ($rows < 1) {
并确保使用与查询相同的MySQL API成功连接到数据库。
检查查询错误
还要考虑使用准备好的陈述。
<强>诺塔:强>
如果数据来自用户输入,您还需要转义数据。
即:
$var = $_POST['var'];
如果$_POST['var']
等同于joey's bistro
。
如果它在查询WHERE user2='joey's bistro'
中作为变量传递,MySQL会将其视为WHERE user2='$var'
,从而导致语法错误。
转义它会将其呈现为joey\'s bistro
有效语法。
$var = mysqli_real_escape_string($db_conx,$_POST['var']);
这对于这一点以及帮助防止SQL注入都是有益的。