ローカルの XAMPP テスト サーバーで動作するこのコードのチャンクがあります。問題は、本番サーバーにプッシュすると壊れることです。これはデータベース接続の問題ではなく、本番サーバーでは PHP/MySQL が両方とも 5.3 であるため、どちらの古いバージョンも使用していません。より標準的な while ループの代わりに foreach ループを使用していると考えています。もしそうなら、なぜですか?
<?php
$res = $mysqli->query('DESCRIBE '.$table);
$columnCount = 0;
echo '<ul>';
foreach($res as $field) {
if(in_array($field["Field"], $sheetData[0])) {
echo '<li>';
//var_dump($field);
echo $field['Field'].' - '.$field['Type'];
echo "</li>\r\n";
$columnCount++;
}
}
echo '</ul>';
?>
編集:明確にするために、何も出力しないことで壊れます。ループ内に単純な echo ステートメントを挿入すると、実行すらされないようです。
EDIT2: 以下に回答を追加しました。これは、ここでの問題が実際に何であったか、およびこのコードが特定の条件下で実際に機能する理由について、もう少し詳しく説明しています。