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%'));
这使它完美运行。
谢谢。
我有以下内容:
$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%'));
这使它完美运行。
谢谢。