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