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

它returns:

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

)

所以哪里出了问题?为什么我只得到一个 return 当 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%'));

这使它完美运行。

谢谢。