-1

我正在尝试使用名称或参考号(格式为 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();
}
4

1 回答 1

1

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

于 2013-06-06T14:32:18.923 回答