请告诉我这个查询有问题吗?
$q = '%franci%';
$liveSearch=$stmt->prepare("SELECT keyword FROM keyword WHERE keyword LIKE :keyword ORDER BY id DESC LIMIT 10");
$liveSearch->execute(array(':keyword' => $q));
if ($liveSearch->fetch() <= 0) {
echo "no results";
}else {
echo $liveSearch->rowCount();
while($row=$liveSearch->fetch()){
echo $row['keyword'];
}
}
在我的数据库中我有两行
1→ Francian
2→ Franciano
rowCount()echos 2
虽然只给了我Franciano
哪里&#39;是弗朗西斯?以及如何解决这个问题? 感谢
答案 0 :(得分:2)
这个if语句正在吃你的第一条记录:
if ($liveSearch->fetch() <= 0) {
echo "no results";
}
将其替换为:
if ($liveSearch->rowCount() <= 0) {
echo "no results";
}
答案 1 :(得分:1)
您是第一次致电$liveSearch->fetch()
,获得第一个值。
当你进行循环时,它从第二个结果开始。
答案 2 :(得分:0)
当您执行
时,您将取出第一个结果if ($liveSearch->fetch() <= 0) {
echo "no results";
}
你可以改为
$liveResults=$liveSearch->fetchAll();
if (count($liveResults)> 0) {
echo count($liveResults);
foreach($liveResults as $row) {
echo $row['keyword'];
}
} else {
echo "no results";
}