我有一个包含以下示例数据的数据库
http://i.stack.imgur.com/YOmX9.png
我正在使用PDO搜索名称(第3列,我排除了标题),使用以下内容:
search('items', 'name', 'Strong');
public function search($table, $column, $term){
$command = "SELECT name FROM `$table` WHERE `$column` LIKE :$column";
$query = $this->connection->prepare($command);
$query->execute(array(":$column"=>$term));
return $query->fetchAll();
}
和我的reutrn是
Array ( )
为什么不归还任何东西?
答案 0 :(得分:2)
你可以试试这个:
$query->execute(array(":$column" => "{$term}%"));
LIKE
运算符需要知道它应忽略的值的哪些部分。执行abc LIKE 'def'
之类的操作与执行abc='def'
相同。 %
字符用于告诉LIKE
它应忽略的内容。
因此,abc LIKE 'def%'
告诉LIKE
它应该找到以 def
开头的内容,并且之后可能有或没有任何内容。
%
字符可以在搜索字符串中的任何位置和多次使用。例如,abc LIKE '%def%'
在值中的任何位置找到包含 def
的内容,abc LIKE '%def'
找到结束的内容{{1} }}
字符串中的def
只是插值分隔符。插入数组值时需要使用它们,但有些人也将它们用于常规变量。你并不严格需要它们。你可以写它{}
,但我发现花括号有助于区分变量与字符串的其余部分。
注意:如果您知道正则表达式,则SQL "$term%"
字符与正则表达式中的%
非常相似。