我正在寫一些PHP代碼,以允許外部只讀訪問MySQL數據庫中的某些字段。PHP在循環中的第一個查詢失敗
我有一張表,每週有一個ID與每一天相關,我需要爲每一天運行一個查詢,獲取一個序列化的PHP對象,操作它並將其作爲JSON返回。
我的代碼如下:
<?php
// Connect to DB
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($link, DB_CHARSET);
$dayIds = ["Monday" => 3585,
"Tuesday" => 3586,
"Wednesday" => 3587,
"Thursday" => 3588,
"Friday" => 3589,
"Saturday" => 3590,
"Sunday" => 3591];
$dayData = [];
// Iterate over days
foreach($dayIds as $day => $dayId){
// Create SQL
$sql = "select value from table_meta where day_id=".$dayId;
echo $sql."<br><br>";
$result = mysqli_query($link, $sql);
// Get Result
$new_data = [];
$row = mysqli_fetch_row($result);
$data = unserialize($row[0]);
// Manipulate Data and add it to the new_data array
//
// (Hidden for confidentiality reasons)
//
$dayData[$key] = $new_data;
echo json_encode($new_data)."<br><br>";
}
的問題是,第一次查詢總是失敗(返回false),我試過切換週一和週二的順序在陣列中,然後週一作品週二失敗。
當我嘗試循環unserialised結果時,它給出錯誤「Warning:foreach()提供的無效參數」。
爲了解決這個問題,我在$ dayIds數組的頂部添加了另一個元素並且它正在工作,但是由於這段代碼要去一個客戶端,我想解決第一個失敗的原因。
在此先感謝。
你有看'mysqli_error($鏈接)的結果;'? – rickdenhaan
奇怪的是'$ data = unserialize($ row [0]);''$ row = mysqli_fetch_row($ result);''之前''。 – Sean
[爲foreach()提供的無效參數可能重複](https://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach) –