Php 在数据库中按姓氏搜索客户
这段代码为我提供了一个客户表,其中包含用户输入到搜索字段中的姓氏。但显然,只有当你输入完整的姓氏时,它才起作用。如果我只输入姓氏的第一个字母,谁能告诉我如何更改代码以获得结果 MySQL解决方案 根据您希望匹配的工作方式,您可以执行以下操作:Php 在数据库中按姓氏搜索客户,php,mysql,Php,Mysql,这段代码为我提供了一个客户表,其中包含用户输入到搜索字段中的姓氏。但显然,只有当你输入完整的姓氏时,它才起作用。如果我只输入姓氏的第一个字母,谁能告诉我如何更改代码以获得结果 MySQL解决方案 根据您希望匹配的工作方式,您可以执行以下操作: function search_customer($search) { global $db; $query = 'SELECT * FROM customers WHERE lastName LIKE :search';
function search_customer($search) {
global $db;
$query = 'SELECT * FROM customers WHERE lastName LIKE :search';
$statement = $db->prepare($query);
$statement->bindValue(':search', $search);
$statement->execute();
$results = $statement->fetchAll();
$statement->closeCursor();
return $results;
}
这将返回lastName的行:search作为子字符串。是一个可变函数,它将所有参数组合成一个字符串
$query = 'SELECT * FROM customers
WHERE lastName
LIKE CONCAT("%", :search, "%" )';
工作原理
为什么百分比有用?MySQL的LIKE是一个模式匹配关键字。LIKE有两个特殊字符“%”和“389;”,分别表示“匹配0个或更多字符的任何组”和“匹配任何单个字符”
例如:
CONCAT("%", "John", "%") = "%John%"
- “%john%”将与“johnson”、“john”或“baker johnson”匹配
- “约翰”和“约翰”匹配,但和“约翰”不匹配
CONCAT("%", "John", "%") = "%John%"
您还可以更新您的函数,如-
注意:绑定值时,将%
与搜索字符串连接起来
或
使用MySQLCONCAT()
更新查询
以下是有关的详细信息,如果,
LIKE%:search%
?它应该像@DaveChen saidIt那样工作,我没有试过,但它给我一个错误,上面写着除法zero@SelinaSchuh显示错误和更新的代码。是的,我注意到,感谢它应该是函数搜索\u客户感谢它与CONCAT的合作。CONCAT到底是什么意思?只是对php和一般的编码比较陌生,我从未见过它before@SelinaSchuh,我已经用更多信息更新了我的答案。好吧,我想第一个版本将显示一个包含数据库中所有客户的表,当我在搜索字段中输入一个字母时,它将只显示包含该字母的那些,对吗?MySQLLIKE
子句使用字符串匹配。下面是关于LIKE
子句@SelinaSchuh的详细信息
function SearchCustomer($search) {
global $db;
$query = 'SELECT * FROM customers WHERE lastName LIKE :search';
$statement = $db->prepare($query);
$statement->bindValue(':search', '%'.$search.'%'); #Concatenate '%' sign with search String
$statement->execute();
$results = $statement->fetchAll();
$statement->closeCursor();
return $results;
}
SELECT * FROM customers WHERE lastName LIKE CONCAT("%",:search,"%")