Rumah > Artikel > pembangunan bahagian belakang > Mengapa saya mendapat ralat \"Fatal error: [] operator not supported for strings\" semasa mengemas kini pangkalan data saya?
Dalam pembangunan web, adalah perkara biasa untuk menghadapi ralat semasa bekerja dengan pangkalan data dan tatasusunan. Satu ralat sedemikian ialah "Ralat maut: [] operator tidak disokong untuk rentetan." Ralat ini berlaku apabila percubaan dibuat untuk menggunakan sintaks tolak tatasusunan pada pembolehubah yang belum diisytiharkan dengan betul sebagai tatasusunan.
Dalam kod yang disediakan, baris berikut bertanggungjawab untuk mengambil data daripada pangkalan data dan menetapkannya kepada tatasusunan:
<code class="php">$namesql1 = "SELECT name,date,text,date2 FROM table WHERE something= '$something'"; $nameresult1 = mysql_query($namesql1); while ($row = mysql_fetch_array($nameresult1, MYSQL_ASSOC)) { $name[] = $row['name']; $date[] = $row['date']; $text[] = $row['text']; $date2[] = $row['date2 ']; }</code>
Di sini, pembolehubah $name, $date, $text, dan $date2 dimulakan sebagai tatasusunan dan digunakan untuk menyimpan data yang sepadan daripada pangkalan data.
Ralat dalam kod berlaku dalam baris berikut:
<code class="php">$wrotesql = "UPDATE service_report SET name ='$name' , $date = '$date',$text = '$text[$nro]', ser_date = '$date2[$nro]' WHERE something = '$something')"";</code>
Dalam baris ini, percubaan dibuat untuk menggunakan sintaks tolak tatasusunan $text[$nro] dan $date2[$nro] untuk mengemas kini lajur $text dan $date2 dalam pangkalan data. Walau bagaimanapun, sintaks ini hanya sah untuk tatasusunan dan pembolehubah $text dan $date2 telah dimulakan sebagai rentetan. Akibatnya, ralat "Ralat maut: [] operator tidak disokong untuk rentetan" dicetuskan.
Untuk menyelesaikan ralat ini, anda perlu memastikan bahawa pembolehubah $text dan $date2 diisytiharkan sebagai tatasusunan sebelum menggunakan sintaks tolak tatasusunan. Satu cara untuk melakukan ini ialah menukar tugasan pembolehubah dalam gelung while kepada yang berikut:
<code class="php">$text = array(); $date2 = array();</code>
Dengan perubahan ini, pembolehubah $text dan $date2 akan dimulakan sebagai tatasusunan dan anda boleh menggunakan sintaks tolak tatasusunan untuk mengubah suai kandungannya.
Dengan menangani pemulaan tatasusunan yang salah, "Ralat maut: [] operator tidak disokong untuk rentetan" akan diselesaikan dan anda boleh berjaya mengemas kini maklumat pangkalan data seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa saya mendapat ralat \"Fatal error: [] operator not supported for strings\" semasa mengemas kini pangkalan data saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!