我撰寫了一個獲取檔案記錄的查詢,在該記錄中有一個名為 的欄位Attachment,它將檔案位置和屬性存盤為一個陣列。
我曾經這樣做的查詢是:
$result=DB::Query("select * FROM dbo.Toolkit_ComplianceItems WHERE ToolkitItemPk= 114");
while($data = $result->fetchAssoc())
{
$array = $data["Attachment"];
echo $array;
}
echo 將陣列輸出如下:
[{
"name": "files\/Cairnhill Emergency Plan v.6.0 Sep 2022_dy8yokem.pdf",
"usrName": "Cairnhill Emergency Plan v.6.0 Sep 2022.pdf",
"size": 1020697,
"type": "application\/pdf",
"searchStr": "Cairnhill Emergency Plan v.6.0 Sep 2022.pdf,!:sStrEnd"
}]
所以,我知道 var_dump 和 echo 回傳我所期望的。
然后,我嘗試檢索確切的欄位,例如檔案名,該檔案名記錄在此陣列中的“名稱”下,我正在使用以下方法執行此操作:
echo "name: ".$array[0]["name"];
但由于我不明白的原因,我收到以下錯誤訊息:
致命錯誤:未捕獲的 TypeError:無法訪問字串上型別字串的偏移量
據我所知,我使用的是正確的 [array][0][name] 結構,但是有人可以指出我做錯了什么嗎?
(PS 我知道這個查詢對 SQL 注入開放,我會在它作業后更正它。)
uj5u.com熱心網友回復:
資料似乎在您的資料庫中存盤為JSON字串。
要從 JSON 字串中獲取資料,首先需要將其解碼為 PHP 物件/陣列變數:
$data = json_decode($array, true);
echo "name: ".$data[0]["name"];
演示:https ://3v4l.org/7i1ZR
請注意,我使用該選項將 JSON 解碼為關聯陣列而不是物件,因此您可以使用現有代碼從中讀取。參考:https ://www.php.net/manual/en/function.json-decode.php
另請參閱:如何使用 PHP 從 JSON 中提取和訪問資料?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510532.html
標籤:phpsql数组
