2017-07-26 41 views
2

我試圖將一些舊的sqlite3數據庫代碼轉換爲sqlite3準備語句,以提高我的網站的安全性。我正在考慮切換到MySQL,但現在我想先讓它工作。SQLite3準備語句選擇重複的結果

我看不出我在這裏做了什麼錯,但是我所有的結果都加倍了。

這裏是我的代碼:

$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] => 
) 

我不確定爲什麼會發生這種情況,顯然我不希望所有這些重複的信息,因爲它是不必要的。我該如何解決這個問題?

+0

那是因爲您同時使用'的print_r()'和'fetchArray() '。 –

+0

但不''結果 - > fetchArray()'只是舉行一個數組?如何打印數組? – GrumpyCrouton

+0

你可以使用'while'或'foreach'循環。如果有重複的行,那麼您需要使用DISTINCT和/或GROUP BY。 –

回答