【问题标题】:PHP Parsing error: "Parse Error received on unexpected T_ENCAPSED AND WHITESPACE." [closed]PHP 解析错误:“在意外的 T_ENCAPSED 和空白处收到解析错误。” [关闭]
【发布时间】:2013-04-15 14:54:44
【问题描述】:

我收到一个 PHP 错误:

Parse Error received on unexpected T_ENCAPSED AND WHITESPACE. 

该行:($insert .= "($POST...) 是生成错误的行。

(string)$insert;
if(is_array($_POST['Year']))
{
    foreach($_POST['Year'] as $k=>$v)
    {
        //the following line returns the error
        $insert .= "($_POST['Name'][$k], $_POST['One'][$k], $_POST['Two'][$k], $_POST['Four'][$k], $_POST['Eight'][$k], $_POST['Fifteen'][$k], $_POST['LJump'][$k], $_POST['HJump'][$k], $_POST['Shotputt'][$k], $_POST['Discuss'][$k], $_POST['Javelin'][$k], $_POST['Date'][$k], $_POST['Year'][$k]),";
    }
    $insert = substr_replace($insert ,0,-1);
}
else
{
    $insert .= "($_POST['Name'], $_POST['One'], $_POST['Two'], $_POST['Four'], $_POST['Eight'], $_POST['Fifteen'], $_POST['LJump'], $_POST['HJump'], $_POST['Shotputt'], $_POST['Discuss'], $_POST['Javelin'], $_POST['Date'], $_POST['Year'])";
}

$sql="INSERT INTO results_main 
(Name, One, Two, Four, Eight, Fifteen, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year)
VALUES 
".$insert;

$result = mysql_query($sql) or die(mysql_error());

【问题讨论】:

  • 如果您要否决我的问题,您至少可以提供一些反馈吗?
  • 您在第一个 $insert .= 中有一个 dot,而在第二个中没有。去掉第一个点,放到第二个$insert =
  • 抱歉,我需要把dots 放在哪里?
  • 我会测试并删除第一个点。试试$insert = "($_POST['Name'][$k],$insert = "($_POST['Name'],。不知何故,这似乎不对,您正在连接。
  • 反馈:您拼错了几个字。帖子包含一个关于您有多沮丧的小咆哮(与登陆此页面的其他人无关),您没有在其自己的块中突出显示错误以使其弹出。代码不会“大惊小怪”。大惊小怪是什么意思?您没有清楚地考虑错误是什么,也没有清楚地考虑您想要什么。很难读懂你的心思。而且您的代码格式不正确(随机方式的制表符和空格)。最后,问题是“过于本地化”。因此,否决票是我们试图让您停止做那些烦人的事情的尝试。

标签: php mysql parsing whitespace


【解决方案1】:

基本 PHP 语法:不能在双引号字符串中使用带引号的数组键:

$x = "$array['key']";
             ^---^--- wrong

应该是:

$x = "{$array['key']}";
      ^--           ^--- note the braces
or
$x = "$array[key]";
             ^--^-- note lack of ' quotes

你也敞开心扉,乞求SQL injection attack。因此,在进行任何其他编码之前,请先了解这一点。

【讨论】:

  • 我已经实现了这个并且仍然收到同样的错误。只是为了确认,我删除了 Year 数组键周围的引号。
  • 你必须远程控制每个 $_POST 变量中所有引用的键,或者至少使用{} 符号来封装它们。
  • 感谢您对 SQL 注入的建议,但是我的知识很老,而且这个应用程序将在一个没有外部访问的 LAN 上,所以它目前不是优先事项,部署是。我现在就试试你的建议
  • 每个stackoverflow帖子只有一个问题。如果您修复了顶部定义的错误,并收到新错误,请提出新问题。但要小心,如果它太相似,你会得到反对票。
  • 好的,埃里克,谢谢你的建议。
猜你喜欢
  • 2011-09-24
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多