我需要一个帮助解决PHP查询

时间:2014-08-28 22:37:22

标签: php mysql pdo sql-like

请告诉我这个查询有问题吗?

        $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;是弗朗西斯?以及如何解决这个问题? 感谢

3 个答案:

答案 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";
}