这是我有点破碎的策略
如果是没有输入的查询(总是相同),只需使用query();
$results = $this->database_top->query( $query );
如果返回单行且有输入,请执行准备(此处未显示)并使用
$results = $pdoStatement->fetch(PDO::FETCH_ASSOC);
如果返回多行且有输入,请执行准备(此处未显示)并使用:
$results = $pdoStatement->fetchAll();
我面临的问题是我需要第一种方法来返回数组或数组数组,如第二种和第三种。
Prep看起来像这个FYI
$this->database_top->quote($query); // quote it
$pdoStatement = $this->database_top->prepare($query); // prepare it
$results = $pdoStatement->execute($parameterArray); // execute it
如何修改代码以便所有3个方法都返回数组或数组数组?
迭代查询()
$result_array = $this->DatabaseObject->_pdoQuery( 'multiple', 'tweet_model' );
foreach( $result_array as $array_1d )
{
$array_2d[]=$array_1d;
}
答案 0 :(得分:3)
query
没有返回结果,所以我不确定你在第一个例子中的含义。 query
返回PDOStatement。它基本上与:
$qry = $db->query("...");
//equiv:
$qry = $db->prepare("...");
$qry->execute();
正如vicTROLLA所指出的,最简单的解决方案就是使用:
$results = $stmt->fetch(PDO::FETCH_ASSOC);
但是,如果由于某种原因需要处理结果,可以随时手动循环。
$stmt = ...;
$results = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$results[] = $row;
}
//use or return $results
因此, $results
将始终是一个内部包含0个或更多数组的数组。
我发现构建数组是有用的,其中数组键是记录的主键:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$results[$row['id']] = $row;
}
另外,我怀疑你误解了quote的目的和功能。它用于转义要插入到查询中的字符串,而不是用于神奇地转义查询中的所有值(因此$db->quote($query)
毫无意义)。
更糟糕的是,司机不需要支持报价。 (如果没有支持,它至少会返回false。)
prepare
首选优先于quote
。
答案 1 :(得分:1)
在所有的情况下,您可以
$arrayOfAssocArrays = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);