我有以下内容:
$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'的呼号值时,我为什么只得到一次返回?
答案 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%'));
这使它完美无缺。
感谢。