私は、MySQLを使用してデータベースからいくつかの情報を抽出しています。結果をAjax関数に送信し、その結果をWebページに表示します。この特定のケースで「ヘッダーが既に送信されました」原因
$views = $connection->execute("SELECT profilePic FROM users");
foreach($views as $views)
{
echo "<tr><td><img src='".$views['profilePic']."' /></td></tr>";
}
"ヘッダが既に送信された" という警告があるため、コードのこの部分の表示されます:解析されたときに
<img src='".$views['profilePic']."' />
次のようになります。
ここ は私のPHPコードです<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0SsLAAAgAElE [TRUNCATED] ..." >
img部分を削除すると、警告:
$views = $connection->execute("SELECT profilePic FROM users");
foreach($views as $views)
{
//this throws no warning:
echo "<tr><td></td></tr>";
}
正確に警告を発するのは誰ですか?どのルールが適用されていますか?
ルールは非常に簡単です。ヘッダーを送信する前に出力を送信することはできません。それでおしまい。それ以上のことはありません。後で出力を送信する場合は、[出力バッファリング](http://php.net/manual/ro/function.ob-start.php)を使用してください。あるいは単に出力に変数を格納し、ヘッダーを送信した後に送信するだけです。 – Andrew
@Andrewこれは私が最初に考えたものですが、エコーだけを送信すると警告が発生しないのはなぜですか?