PDO 搜索返回数组()

PDO Search Returning Array()

我有一个包含以下示例数据的数据库

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();
    }

我的返回值是

Array ( )

为什么它没有返回任何东西?

你可以试试这个:

$query->execute(array(":$column" => "{$term}%"));

LIKE 运算符需要知道行中值的哪些部分应该忽略。做类似 abc LIKE 'def' 的事情与做 abc='def' 是一样的。 % 字符用于告诉 LIKE 它应该忽略什么。

因此,abc LIKE 'def%' 告诉 LIKE 它应该找到 def 开头的东西,并且可能有也可能没有任何东西它。

% 字符可以在搜索字符串中的任何地方使用,并且可以多次使用。例如,abc LIKE '%def%' 查找 包含 def 值中任意位置的内容,abc LIKE '%def' 查找 结束 [=43] 的内容=] 与 def.

字符串中的{}只是插值分隔符。当您插入数组值时,您需要使用它们,但有些人也将它们用于常规变量。你并不严格需要它们。您可以只写 "$term%",但我发现花括号有助于将变量与字符串的其余部分区分开来。

注意:如果您知道正则表达式,那么 SQL % 字符很像正则表达式中的 .*?