2011-05-04 59 views
28

Tôi nhận được thông tin từ cơ sở dữ liệu, lưu nó vào mảng và lặp lại nó trong một biểu mẫu với cấu trúc vòng lặp và tôi gặp sự cố khi tôi cố gắng lưu sửa đổi thông tin thành cơ sở dữ liệu.Vấn đề với: Lỗi nghiêm trọng: Toán tử [] không được hỗ trợ cho các chuỗi trong

Tôi nhận được lỗi này: Fatal error: [] nhà điều hành không được hỗ trợ cho các chuỗi trong ....

Code:

$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);  

thể ai đó xin vui lòng cho tôi một gợi ý những gì tôi m làm sai?

Cảm ơn bạn.

+3

trong ...? Bạn có thể cho chúng tôi biết dòng? – Shoe

+0

Điều đó làm việc như một sự quyến rũ, đã thay đổi dấu ngoặc đơn cho dấu ngoặc đơn. –

Trả lời

50

Bạn gặp lỗi này khi cố gắng sử dụng cú pháp đẩy mảng ngắn trên một chuỗi.

Ví dụ, đây

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

tôi đánh bạo đoán rằng một hoặc nhiều của bạn $name, $date, $text hoặc $date2 biến đã được khởi tạo như là một chuỗi.

Chỉnh sửa: Nhìn lại câu hỏi của bạn, có vẻ như bạn không thực sự muốn sử dụng chúng làm mảng khi bạn coi chúng là chuỗi tiếp tục.

Nếu vậy, thay đổi nhiệm vụ của bạn để

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

Tôi nhận thấy rằng đây có thể là một vấn đề liên quan đến việc di chuyển từ php 5 sang php 7. php 5 đã khoan dung nhiều hơn trong việc biến một mảng hay không là php 7. Trong hầu hết các trường hợp, giải pháp là khai báo mảng một cách rõ ràng, như được giải thích trong câu trả lời này. –

24

Bạn đã có thể định nghĩa $name, $date, $text hoặc $date2 là một chuỗi, như:

$name = 'String'; 

Sau đó, nếu bạn đối xử với nó như một mảng sẽ cung cấp lỗi nghiêm trọng đó:

$name[] = 'new value'; // fatal error 
.210

Để giải quyết vấn đề của bạn chỉ cần thêm đoạn mã sau vào đầu vòng lặp:

$name = array(); 
$date = array(); 
$text = array(); 
$date2 = array(); 

này sẽ đặt lại giá trị của chúng vào mảng và sau đó bạn sẽ có thể sử dụng chúng như mảng.

Các vấn đề liên quan