2013-03-12 32 views
7

Mã đơn giản này gọi hai thủ tục MySQL, nhưng sau khi mã đầu tiên trả về giá trị, nó trả về lỗi trên truy vấn thứ hai.Lệnh PHP không đồng bộ lỗi

LƯU Ý: Chạy đầu tiên hoặc lần thứ hai theo cách riêng của chúng sẽ trả lại chính xác cho từng loại. Vì vậy, các truy vấn hoạt động, không chỉ với nhau.

Các lỗi đầy đủ là: Invalid query: Commands out of sync; you can't run this command now

Bất kỳ ý tưởng xin vui lòng.

<?php 

require_once ('connection.php'); 
//First Query and Output 

$result = mysql_query("CALL C01_Client_Summary_ByAccount(1, '2012-02-27', '2013-03-29');"); 
if (!$result) { 
die('Invalid query: ' . mysql_error()); 
} 
while($row=mysql_fetch_array($result)) 
{ 
echo $row['CommisionPercentage']; 
} 

mysql_free_result($result); 
//END First Query and Output 

//Second Query and Output 
$new2 = mysql_query("CALL C01_Client_Summary_ByBetType(1, '2012-02-27', '2013-03-29');"); 
if (!$new2) { 
die('Invalid query: ' . mysql_error()); 
} 
while($row=mysql_fetch_array($new2)) 
{ 
echo $row['Turnover']; 
} 
//END Second Query and Output 

?> 
+1

Liệu đầu tiên 'CALL của bạn() 'nguyên nhân 2 resultsets? – Wrikken

+0

Tôi tìm thấy giải pháp cho số Tôi cần thay đổi kết nối thành bao gồm ('connection.php'); và sau đó truy vấn đầu tiên đóng kết nối mysql_close ($ con); và sau đó mở lại kết nối trước truy vấn thứ hai bao gồm ('connection.php'); – user2162372

+0

Xem http://stackoverflow.com/q/614671/632951 – Pacerier

Trả lời

5

Tiện ích mở rộng MySQL cũ cho PHP không hoạt động đúng với quy trình được lưu trữ. Thật không may có đường nối không có cách nào để thực hiện nhiều thủ tục được lưu trữ với nó. Vấn đề là các thủ tục đầu tiên để lại một số bộ đệm kết quả gây ra thứ hai thất bại. Tuy nhiên bạn có thể sử dụng phần mở rộng mysqli. Dưới đây là một ví dụ đẹp về làm thế nào để làm điều này:

http://www.daniweb.com/web-development/php/threads/234868/error-commands-out-of-sync-you-cant-run-this-command-now

+0

cảm ơn - tôi cũng thấy rằng - giải pháp của tôi có lẽ là một cheat – user2162372

+1

giải pháp là chuyển sang phần mở rộng 'mysqli' hoặc' PDO'. Hãy nhớ rằng các hàm 'mysql_xxX()' cũ không còn được dùng nữa và không được hỗ trợ; một ngày nào đó bạn sẽ cần nâng cấp phiên bản PHP của mình và nếu bạn chưa chuyển đổi, bạn sẽ thấy mã của mình không hoạt động; nó sẽ là một nỗi đau thực sự để sửa chữa nó khi điều đó xảy ra. Chuyển đổi ngay bây giờ trong khi nó dễ dàng để làm. – Spudley

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