我正在尝试遍历表中的所有记录,并显示与SQL匹配的所有记录的内容,并显示没有匹配的记录的其他内容。
所以我这样做:
$result = mysqli_query($con,"SELECT * FROM myTable WHERE id='$my_id' ");
while($row = mysqli_fetch_array($result)) {
if (!empty($row['id'])) {
echo 'Match Exists!';
} else {
echo 'There is NO Match';
}
}
我的问题是,尽管有匹配,但是没有回音用于非匹配。
所以,我得到了“Match Exists!”对于比赛但没有“没有比赛”的非比赛。
我在这里做错了什么?
答案 0 :(得分:1)
SELECT * FROM myTable WHERE id ='$ my_id
在这里,您要检查是否存在任何ID匹配的行,以便您的代码丢失其属性:
if(!empty($row['id'])) {
echo 'Match Exists!';
} else {
echo 'There is NO Match';
}
您已经验证是否存在,因此不会有任何空ID。
答案 1 :(得分:0)
如果没有匹配项,$row
将评估为FALSE
(因为没有返回任何行)。如果您必须使用while
循环,请尝试do { ... } while (...);
,如下所示。
不同之处在于在第一次迭代后检查while()
条件。
$result = mysqli_query($con,"SELECT * FROM myTable WHERE id='$my_id' ");
do {
$row = mysqli_fetch_array($result);
if (!empty($row['id'])) {
echo 'Match Exists!';
} else {
echo 'There is NO Match';
}
} while(!empty($row['id']));
答案 2 :(得分:0)
由于您的查询,您没有匹配项。
SELECT * FROM myTable WHERE id='$my_id'
以上内容仅提取匹配的记录。
也许你应该改变你的查询或行
if (!empty($row['id']))
并检查可能为空的其他字段
答案 3 :(得分:0)
Try this
<?php
$result = mysql_query($con,"SELECT * FROM myTable WHERE id='$my_id' ");
$num=mysql_num_rows($result);
if ($num!=0)
{
echo 'Match Exists!';
} else {
echo 'There is NO Match';
}
?>
OR
<?php
$result = mysql_query($con,"SELECT * FROM myTable WHERE id='$my_id' ");
while($row = mysql_fetch_array($result))
{
$id=$row['id'];
$query=$result = mysql_query($con,"SELECT * FROM myTable WHERE id='$id' ");
$num=mysql_num_rows($query);
if ($num!=0)
{
echo 'Match Exists!';
} else {
echo 'There is NO Match';
}
}
?>
答案 4 :(得分:0)
您的查询明确过滤掉#34;不匹配#34;行:
WHERE id = '$my_id' -- neither rows having "id != $my_id"
-- nor rows with empty "id" are fetched by this query
您可能希望从查询中删除WHERE
条件,并在PHP循环中测试if($row['id'] === $my_id)
。
答案 5 :(得分:-1)
尝试删除带修剪的“空格”:
if (!empty(trim($row['id']))) {
echo 'Match Exists!';
}