在Web 開發中,很常見使用資料庫和數組時遇到錯誤。此類錯誤之一是「致命錯誤:字串不支援 [] 運算子」。當嘗試對尚未正確聲明為數組的變數使用數組推送語法時,會出現此錯誤。
在提供的程式碼中,以下幾行負責從資料庫取得資料並將它們分配給陣列:
<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>
這裡,變數$name、$date、$text 和$date2 被初始化為數組,用於儲存資料庫中對應的資料。
程式碼中的錯誤出現在以下行:
<code class="php">$wrotesql = "UPDATE service_report SET name ='$name' , $date = '$date',$text = '$text[$nro]', ser_date = '$date2[$nro]' WHERE something = '$something')"";</code>
在這一行中,嘗試使用陣列推送語法$text[$nro] 和$date2[$nro] 來更新資料庫中的$text 和$date2 欄位。但是,此語法僅對陣列有效,且 $text 和 $date2 變數已初始化為字串。因此,會觸發錯誤「致命錯誤:字串不支援 [] 運算子」。
要解決此錯誤,您在使用陣列推送語法之前,需要確保 $text 和 $date2 變數被宣告為陣列。一種方法是將while 循環中的變數賦值更改為以下內容:
<code class="php">$text = array(); $date2 = array();</code>
透過這些更改, $text 和$date2 變數將初始化為數組,您可以使用數組推送語法來修改其內容。
透過解決不正確的陣列初始化問題,「致命錯誤:字串不支援 [] 運算子」將得到解決,您可以按預期成功更新資料庫資訊。
以上是為什麼我在更新資料庫時收到「致命錯誤:字串不支援 [] 運算子」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!