MySQLデータベースの特定のフィールドに外部からの読み取り専用アクセスを許可するPHPコードを記述しています。PHPループ内の最初のクエリが失敗する
各曜日に関連付けられたIDがあるテーブルがあり、毎日1つのクエリを実行し、シリアル化された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を返します)、私が試した失敗したということです火曜日には失敗します。
私は、シリアル化されていない結果をループしようとすると、 "Warning:無効な引数foreach()"が返されます。
これを解決するために、$ dayIds配列の先頭に別の要素を追加して動作させていますが、このコードはクライアントに送信されるため、最初に失敗する理由を解決したいと思います。
ありがとうございました。
のようになりますあなたは' mysqli_error($リンク)の結果で見たことがありますか? – rickdenhaan
'$ row = mysqli_fetch_row($ result);'の前に '$ data = unserialize($ row [0]); – Sean
[無効な引数がforeach()に対して指定されている可能性があります(https://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach) –