带有LIKE的MySQL返回错误的行

时间:2015-06-06 17:51:00

标签: php mysql distinct sql-like

我有以下内容:

 $q = "w0";

 $stmt = $db_found->prepare("SELECT DISTINCT callsign FROM NetLog WHERE callsign LIKE ?");
 $stmt->execute(array("%q%"));
 $result = $stmt->fetchAll();
 $print_r($result);

它返回:

Array
(
    [0] => Array
        (
            [callsign] => KA0QIG
            [0] => KA0QIG
        )

)

出了什么问题?当数据库有多个带有'w0'的呼号值时,我为什么只得到一次返回?

3 个答案:

答案 0 :(得分:1)

您正在使用select distinct而没有通配符。所以,你最多只能获得一个值。

也许你的意思是这样的:

$q = "%w0%";

$stmt = $db_found->prepare("SELECT DISTINCT callsign FROM NetLog WHERE callsign LIKE ?");
$stmt->execute($q);
$result = $stmt->fetchAll();
$print_r($result);

您的版本只是寻找字母“q”。

我觉得你想要:

$stmt->execute(array("%$q%"));

答案 1 :(得分:1)

您当前的代码只是常量“%q%”:

$stmt->execute(array("%q%"));

您需要插入$q变量:

$stmt->execute(array("%$q%"));

答案 2 :(得分:0)

我明白了。我的$stmt->execute(array("%q%"));有引号而不是刻度标记,如:

$stmt->execute(array('%q%'));

这使它完美无缺。

感谢。