PDO搜索失败,有多个数字

时间:2013-06-06 14:26:41

标签: php pdo

我正在尝试使用名称或参考号码搜索数据库(格式为ABC / X / 012345 / XX)。

名称搜索显示完美,参考编号搜索也是如此,如果我查找ABC或XX。

但如果我搜索完整的参考号,则找不到匹配项。部分参考号码搜索包含多个号码(例如ABC / X / 01或甚至只是01)也会出现问题。

我没有收到错误消息,并且“抱歉,您的搜索未返回任何结果”消息未显示,这似乎表明它找到了正确的条目,只是没有显示它们。

有人能找到我错的地方吗?谢谢!

$search = $_POST['search'];

$search_term = "%".$search."%";

try {
    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $STH = $DBH->prepare('SELECT user_id, name FROM users WHERE name LIKE :search_term OR ref_number LIKE :search_term');
    $STH->bindParam(':search_term', $search_term, PDO::PARAM_STR);
    $STH->execute();
    $STH->setFetchMode(PDO::FETCH_ASSOC);
    if ($STH->fetchColumn() > 0) {
        while($row = $STH->fetch()) {
        echo "<a href='viewprofile.php?user_id=".$row['user_id']."'>".$row['name']."</a><br/>";
        }
    } else {
        echo '<p>Sorry, your search returned no results.</p>';
    }
}

catch(PDOException $e) {  
    echo $e->getMessage();
}

1 个答案:

答案 0 :(得分:1)

PDOStatement::fetchColumn($index = 0)获取整行并返回$index列的值。如果要测试查询返回的行数,请使用PDOStatement::rowCount()