0

このエラーが発生し続け、実際の配列、ピリオドを引用符で囲んでみましたが、何も機能しませんでした。

解析エラー: 構文エラー、予期しない T_ENCAPSED_AND_WHITESPACE、8 行目に T_STRING または T_VARIABLE または T_NUM_STRING が必要です

$id = $_GET['id'];
$record = "SELECT `Name`, `Type`, `Size`, `Content` FROM election_candidates WHERE `ID` = '$id'";
$result = $db->query($record);

foreach ($result as $results) {
    header("Content-length: $results['Size']");  <---Line 8
    header("Content-type: $results['Type']");
    header("Content-Disposition: attachment; filename=$results['Name']");

    // echo $results['Size'];

    echo $results['Content'];
}

exit();
4

5 に答える 5

1

複雑な (巻き毛の) 構文単純な構文、または連結演算子を試してください。

// Added isset() and intval()
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
// Removed quotes from 'id'=...
$record = "SELECT `Name`, `Type`, `Size`, `Content` FROM election_candidates WHERE `ID` = $id";
$result = $db->query($record);

foreach ($result as $results) {
    // complex (curly) syntax
    header("Content-length: {$results['Size']}");
    // simple syntax (without quotes)
    header("Content-type: $results[Type]");
    // using concatenation operator
    header('Content-Disposition: attachment; filename='.$results['Name']);

    // echo $results['Size'];

    echo $results['Content'];
}

exit();

さらに、エスケープ$_GET['id']する必要があり、MySQL では整数の引用符は必要ありません。上記のコードのこれら 2 つの「問題」を修正しました。

LIMIT 1SQLクエリに追加してforeachループを削除することもできます;)

于 2012-04-04T13:23:33.843 に答える
1

キーはリテラル文字列であるため、内部引用符を削除できます。

header("Content-length: $results[Size]");

簡単な構文セクションの例を参照してください。

于 2012-04-04T13:36:09.470 に答える
0

文字列内に配列アクセサーをネストしているため、次の構文が必要だと思います。

"Content-length: {$results['Size']}"
于 2012-04-04T13:24:39.307 に答える
0

それ以外の

header("Content-length: $results['Size']");

あなたは書かなければならないでしょう

header("Content-length: ".$results['Size']);

また

header("Content-length: {$results['Size']}");

9行目と10行目で同じことをする必要があります

于 2012-04-04T13:23:54.893 に答える
0

補間された文字列内で配列添え字を使用することはできません。次の 2 つのオプションがあります。

'Content-Length: ' . $results['Size']
"Content-Length: {$results['Size']}"
于 2012-04-04T13:24:12.033 に答える