MySQL与LIKE返回错误的行


MySQL with a LIKE returning wrong row

我有以下内容:

 $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
        )
)

出什么问题了?为什么我只得到一个返回时,DB有许多值与'w0'呼号?

您正在使用没有通配符的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%"));

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

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

您需要插入$q变量:

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

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

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

这使它工作完美。

谢谢。