我一直收到这个错误,我尝试在实际数组周围加上引号,句号,没有任何效果。
解析错误:语法错误,意外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();
答案 0 :(得分:1)
尝试complex (curly) syntax,symple syntax或concatenation operator:
// 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中的整数引号。我在上面的代码中纠正了这两个“问题”。
您还可以将LIMIT 1
添加到SQL查询中并删除foreach
循环;)
答案 1 :(得分:1)
答案 2 :(得分:0)
而不是
header("Content-length: $results['Size']");
你必须写
header("Content-length: ".$results['Size']);
或
header("Content-length: {$results['Size']}");
你必须在第9行和第10行中做同样的事情
答案 3 :(得分:0)
您不能在插值字符串中使用数组下标。您有两种选择:
'Content-Length: ' . $results['Size']
"Content-Length: {$results['Size']}"
答案 4 :(得分:0)
由于您在字符串中嵌套数组访问器,我认为您需要这种语法:
"Content-length: {$results['Size']}"