意外的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING错误

时间:2012-03-06 11:43:33

标签: php mysql select

我一直茫然地看着这个错误,似乎无法知道问题是什么。当我运行查询时,我收到此错误:

  

意外的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING   在这一行:

$sqlupdate1 = "UPDATE table SET commodity_quantity=$qty WHERE user=$rows['user'] ";

6 个答案:

答案 0 :(得分:31)

试试这个

echo $sqlupdate1 = "UPDATE table SET commodity_quantity=$qty WHERE user='".$rows['user']."' ";

答案 1 :(得分:8)

使用{$符号前。并且还添加了addslashes函数来逃避特殊字符。

$sqlupdate1 = "UPDATE table SET commodity_quantity=".$qty."WHERE user=".addslashes($rows['user'])."'";

答案 2 :(得分:6)

尝试

$sqlupdate1 = "UPDATE table SET commodity_quantity=$qty WHERE user={$rows['user']} ";

在双引号字符串中,您需要使用大括号进行数组访问。

答案 3 :(得分:2)

将您的代码更改为。

<?php
$sqlupdate1 = "UPDATE table SET commodity_quantity=".$qty."WHERE user=".$rows['user'];
?>

您的查询中存在语法错误。

答案 4 :(得分:0)

就我而言,heredoc引起了问题。 PHP 7.3或更高版本没有问题。但是,如果在空格中使用heredoc,则PHP 7.0.33会出错。

我的示例代码

$rexpenditure = <<<Expenditure
                  <tr>
                      <td>$row->payment_referencenumber</td>
                      <td>$row->payment_requestdate</td>
                      <td>$row->payment_description</td>
                      <td>$row->payment_fundingsource</td>
                      <td>$row->payment_agencyulo</td>
                      <td>$row->payment_agencyproject</td>
                      <td>$$row->payment_disbustment</td>
                      <td>$row->payment_payeename</td>
                      <td>$row->payment_processpayment</td>
                  </tr>
Expenditure;

如果PHP 7.0.33上有空格,它将出错。

答案 5 :(得分:-1)

我的问题也在heredoc中。我在分号后的if / then语句和右括号内使用了它。因此,我将右括号移到了自己的行,并且问题已解决。

我更改了:

... ;}

收件人:

... ;
}