【问题标题】:SQLite3 Prepared Statements select duplicated results [duplicate]SQLite3 Prepared Statements选择重复的结果[重复]
【发布时间】: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-&gt;fetchArray() 不只是持有一个数组吗?如何打印数组?
  • 您可以使用whileforeach 循环。如果存在重复行,则需要使用 DISTINCT 和/或 GROUP BY。
  • 但是只有 1 个结果?
  • 你仍然需要一个循环。 .......... 我觉得哈哈

标签: php sqlite


【解决方案1】:

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

为了只获取关联数组然后传递SQLITE3_ASSOC

应该是

$result->fetchArray(SQLITE3_ASSOC);

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

【讨论】:

  • 将在 8 分钟内批准为答案
猜你喜欢
  • 2014-03-29
  • 2015-07-14
  • 2012-08-23
  • 1970-01-01
  • 2016-09-11
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多