SQLite3 Prepared Statements选择重复的结果

时间:2017-07-26 12:51:37

标签: php sqlite

我正在尝试将一些旧的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] => 
)

我不确定为什么会这样,显然我不希望所有这些重复的信息,因为它是不必要的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果你只使用fetchArray()默认值,它会将结果行作为关联和数字索引的数组。

要仅获取关联数组,请传递SQLITE3_ASSOC

这将是

$result->fetchArray(SQLITE3_ASSOC);

阅读http://php.net/manual/en/sqlite3result.fetcharray.php