Я получаю информацию из базы данных, сохраняя ее в массиве и повторяя ее в форме с структурой цикла, и у меня возникают проблемы при попытке сохранить измененную информацию в базе данных.
Я получаю эту ошибку: Неустранимая ошибка: [] оператор не поддерживается для строк в ….
Код:
$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 ']; } . . . FORM . . . $wrotesql="UPDATE service_report SET name ='$name' , $date = '$date',$text = '$text[$nro]', ser_date = '$date2[$nro]' WHERE something = '$something')"; $wroteresult=mysql_query($wrotesql);
Может кто-нибудь, пожалуйста, дайте мне подсказку, что я делаю неправильно?
Спасибо.
Эта ошибка возникает при попытке использовать синтаксис короткого массива для строки.
Например, это
$foo = 'foo'; $foo[] = 'bar'; // ERROR!
Я бы рискнул предположить, что одна или несколько ваших переменных $name
, $date
, $text
или $date2
были инициализированы как строка.
Изменить. Если вы снова посмотрите на свой вопрос, похоже, вы на самом деле не хотите использовать их в качестве массивов, поскольку вы рассматриваете их как строки дальше.
Если это так, измените свои задания на
$name = $row['name']; $date = $row['date']; $text = $row['text']; $date2 = $row['date2'];
Вероятно, вы определили $name
, $date
, $text
или $date2
как строку:
$name = 'String';
Тогда, если вы относитесь к нему как к массиву, это приведет к фатальной ошибке:
$name[] = 'new value'; // fatal error
Чтобы решить вашу проблему, просто добавьте следующий код в начале цикла:
$name = array(); $date = array(); $text = array(); $date2 = array();
Это приведет к сбросу их значения в массив, а затем вы сможете использовать их как массивы.