gpt4 book ai didi

php - PDO 结果到数组

转载 作者:行者123 更新时间:2023-11-30 22:41:30 24 4
gpt4 key购买 nike

我从普通的 MYSQL 转移到 PDO MYSQL 并开始使用准备好的语句。使用我的旧系统,我能够查询数据库并将信息存储在数组中。然后我会使用 usort 按金额对表格进行排序。

自从我转移到 PDO 后,我在使用数组时遇到了问题,我从中取出了它。我的原代码如下:

$sql = "SELECT name, item, cash, props FROM Donators";
$result = $conn->query($sql);
$result_array = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$result_array[] = $row;
//var_dump($result_array);
}
} else {
echo "You have yet to join our servers!";
}
$conn->close();

function custom_sort($a,$b) {
return $a['cash']<$b['cash'];
}
usort($result_array, "custom_sort");

这导致表格按“现金”列排序。下面的代码来 self 的 PDO 代码。

    try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT name, item, cash, props FROM Donators");
$stmt->execute();

// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$result_array = array();
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
$result_array[$k] = $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;

function custom_sort($a,$b) {
return $a['cash']<$b['cash'];
}
//print_r($result_array);
usort($result_array, "custom_sort");
$length = count($result_array);

usort 会导致这个错误:

Warning: Illegal string offset 'cash'

打印数组 $result_array 显示

Array ( [name] => Жэка90 [item] => none [cash] => 1000 [props] => 0 )

最佳答案

我使用以下代码:

// In case an error occured during statement execution, throw an exception
if (!$stmt->execute()) {
// Error handling with $stmt->errorInfo()
}

// Fetch all results
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

之后处理数据不需要foreach循环。

关于php - PDO 结果到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com