一尘不染

问题出现:致命错误:[]运算符不支持字符串

mysql

我从数据库中获取信息,将其保存在数组中,并以具有循环结构的形式回显它,当我尝试将修改后的信息保存到数据库时遇到问题。

我收到此错误:

致命错误:字符串中不支持[]运算符。

码:

    $namesql1 = "SELECT name,date,text,date2 FROM table WHERE something= '$something'";
    $nameresult1 = mysql_query($namesql1);
    $countrows = mysql_num_rows($nameresult1);
    while ($row = mysql_fetch_array($nameresult1, MYSQL_ASSOC)) {
        $name[] = $row['name'];
        $date[] = $row['date'];
        $text[] = $row['text'];
        $date2[] = $row['date2 '];
    }

/** SOME CODE HERE **/

    $wrotesql = "UPDATE service_report SET  name ='$name' , $date = '$date',$text = '$text[$nro]', ser_date = '$date2[$nro]' WHERE something = '$something')";

    $wroteresult = mysql_query($wrotesql);

有人可以给我一个提示我做错了什么吗?

谢谢。


阅读 215

收藏
2020-05-17

共1个答案

一尘不染

尝试在字符串上使用短数组推送语法时,会出现此错误。

例如这个

$foo = 'foo';
$foo[] = 'bar'; // ERROR!

我大胆猜测的一个或多个你的$name$date$text$date2变量已经被初始化为一个字符串。

编辑: 再次查看您的问题,似乎您实际上并不想将它们用作数组,因为您将它们当作更进一步的字符串来对待。

如果是这样,请将您的分配更改为

$name = $row['name'];
$date = $row['date'];
$text = $row['text'];
$date2 = $row['date2'];

似乎PHP 7和使用 empty-index 数组推语法的代码存在一些问题。

明确地说,这些在PHP 7+中可以 正常工作

$previouslyUndeclaredVariableName[] = 'value'; // creates an array and adds one entry

$emptyArray = []; // creates an array
$emptyArray[] = 'value'; // pushes in an entry

什么是 不工作 正在尝试使用 空指数 上宣布为字符串,数字,对象等,即任何变量推

$declaredAsString = '';
$declaredAsString[] = 'value';

$declaredAsNumber = 1;
$declaredAsNumber[] = 'value';

$declaredAsObject = new stdclass();
$declaredAsObject[] = 'value';

所有这些都会导致致命错误。

2020-05-17