[英]How can I store data from mySQL database into an array?
我想從mysql數據庫中創建一個數組。 這是我的表data
:
+--------+-------+--------+--------+
| order | id | name | age |
+--------+-------+--------+--------+
| 12 | 121 | fred | 23 |
| 12 | 122 | sam | 24 |
| 12 | 123 | joe | 42 |
| 12 | 124 | alan | 33 |
+--------+-------+--------+--------+
數組的結尾應如下所示:
array(4) {
["121"]=>
array(2) {
["name"]=>
string(4) "fred"
["age"]=>
string(2) "23"
}
["122"]=>
array(2) {
["name"]=>
string(3) "sam"
["age"]=>
string(2) "24"
}
["123"]=>
array(2) {
["name"]=>
string(3) "joe"
["age"]=>
string(2) "42"
}
["124"]=>
array(2) {
["name"]=>
string(4) "alan"
["age"]=>
string(2) "33"
}
}
這就是我創建數組的方式:
$sql = "SELECT * FROM data WHERE order = '12'";
$q = $pdo->prepare($sql);
$q->execute();
$result = $sql->fetchAll();
var_dump($result);
但是我的結果是:
array(4) {
[0]=>
array(20) {
["order"]=>
string(10) "12"
[0]=>
string(10) "12"
["id"]=>
string(32) "121"
[1]=>
string(32) "121"
["name"]=>
string(12) "fred"
[2]=>
string(12) "fred"
["age"]=>
string(32) "23"
[3]=>
string(32) "23"
}
[0]=>
array(20) {
["order"]=>
string(10) "12"
[0]=>
string(10) "12"
["id"]=>
string(32) "122"
[1]=>
string(32) "122"
["name"]=>
string(12) "sam"
[2]=>
string(12) "sam"
["age"]=>
string(32) "24"
[3]=>
string(32) "24"
}
and so on...
我不知道如何將數組轉換為正確的形式
首先,您要組合來自不同API的調用,這是行不通的;其次,您試圖從文本字符串而不是從結果集中獲取記錄。
注意:以下內容替換了先前的答案,該答案未提供期望的結果。
在更改了數據庫不喜歡的某些列名稱之后,我想出了以下方法:
<pre>
<?php
$some_value = 12;
$dbh = new PDO(/*Your connect string goes here*/);
$sql = "SELECT id, name, age FROM some_data WHERE order_id = :order_key";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':order_key'=>$some_value));
$my_output = array();
foreach($stmt->fetchAll(PDO::FETCH_ASSOC) as $rec)
{
$my_output[$rec['id']] = array('name' => $rec['name'], 'age' => $rec['age']);
}
var_dump($my_output);
?>
</pre>
更改變量$some_value
的值將使您可以對order_id
其他值運行查詢。
產生的輸出如下所示:
array(4) {
[121]=>
array(2) {
["name"]=>
string(4) "fred"
["age"]=>
int(23)
}
[122]=>
array(2) {
["name"]=>
string(3) "sam"
["age"]=>
int(24)
}
[123]=>
array(2) {
["name"]=>
string(3) "joe"
["age"]=>
int(42)
}
[124]=>
array(2) {
["name"]=>
string(4) "alan"
["age"]=>
int(33)
}
}
整理我留下的類型以供讀者練習。
如果您使用PDO,則有一種優雅的方法
$sql = "SELECT `id`, `name`, `age` FROM `data` WHERE `order` = '12'";
$q = $pdo->prepare($sql);
$q->execute();
$result = $q->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);
var_dump($result);
另外,如果需要id
作為鍵和$ result中的值,則在SQL查詢中兩次聲明id
列:
SELECT `id`, `id`, `name`, `age` FROM `data` WHERE `order` = '12'
我認為這可以正常工作:
$ps = array();
while ($row = $result->fetch_assoc()) {
$p=array();
$p["name"]=$row["name"];
$p["age"]=$row["age"];
$ps[$row["id"]]=$p;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.