【发布时间】:2017-07-26 21:00:07
【问题描述】:
我正在尝试将一些旧的 sqlite3 数据库代码转换为 sqlite3 准备好的语句,以提高我网站的安全性。我正在考虑切换到 mysql,但现在我想先让它工作。
我在这里看不出我做错了什么,但我所有的结果都翻了一番。
这是我的代码:
$sql = $upc->prepare("SELECT `uid`, `model`, `biosmodel`, `upc`, `systemsku`, `brand`, `hardwareids`, `status`, `pendingHardware` FROM `builds` WHERE `uid`=:id");
$sql->bindValue(':id', $uid, SQLITE3_INTEGER);
$result = $sql->execute();
echo "<pre>".print_r($result->fetchArray(),true)."</pre>";
我的结果是一个包含我所有键的数组,但也包含重复的条目,这些条目似乎只是常规数组键 0-8 具有重复信息,如下所示:
Array
(
[0] => 7
[uid] => 7
[1] => HP 15-AY041WM
[model] => HP 15-AY041WM
[2] => HP Notebook
[biosmodel] => HP Notebook
[3] => 889899757697
[upc] => 889899757697
[4] => X0H86UA#ABA
[systemsku] => X0H86UA#ABA
[5] => HP
[brand] => HP
[6] => [42,43,36,44,5,6,45,38,46,41,41,33]
[hardwareids] => [42,43,36,44,5,6,45,38,46,41,41,33]
[7] => 0
[status] => 0
[8] =>
[pendingHardware] =>
)
我不确定为什么会发生这种情况,显然我不想要所有这些重复的信息,因为它是不必要的。我该如何解决这个问题?
【问题讨论】:
-
这是因为您同时使用了
print_r()和fetchArray()。 -
但是
$result->fetchArray()不只是持有一个数组吗?如何打印数组? -
您可以使用
while或foreach循环。如果存在重复行,则需要使用 DISTINCT 和/或 GROUP BY。 -
但是只有 1 个结果?
-
你仍然需要一个循环。 .......... 我觉得哈哈