我创建了一个非常基本且简单的搜索程序,在读取的行中显示输入的用户名的名字和姓氏。它是成功的,但仅当输入的用户名与数据库中用户名的确切字符和长度匹配时才有效。我希望我的代码能够阅读它,即使它没有完成;例如,数据库中的用户名为" baymax16",输入的用户名为" max16",我希望它返回true,因为某些字符匹配。我使用了preg_match()
,但是出现了错误。我应该使用preg_match()
吗?如果是,我应该如何正确使用它?如果不是,我应该使用什么?
<?php
$db = new PDO('mysql:host=127.0.0.1;dbname=sample;charset=utf8', 'root', '');
if(isset($_POST['search'])) {
$search = $_POST['search'];
$query = $db->prepare("SELECT * FROM search WHERE username=:username");
$query->execute(['username' => $search]);
$row = $query->fetch(PDO::FETCH_OBJ);
if(count($row)) {
if(preg_match($search, $row)) {
echo $row->firstname . ' ' . $row->lastname;
}
}
}
答案 0 :(得分:3)
您的查询:
SELECT * FROM search WHERE username=:username
告诉数据库将提供的字符串为EQUAL的数据IFF提取到数据库中存在的字符串。
为什么不在查询中使用LIKE
运算符?
SELECT * FROM search WHERE username LIKE CONCAT('%', :username,'%');