2011-08-17 20 views
6

Trong file PHP của tôi, tôi sử dụng dòng này để kéo dữ liệu từ cơ sở dữ liệu mySQL của tôi:

$query = "SET @rank=0; SELECT @rank:[email protected] +1 as rank, Blah Blah..."; 

Nếu tôi kiểm tra các câu lệnh SELECT trong cửa sổ SQL phpMyAdmin của (không có $ query =) nó hoạt động tốt.

Nhưng, nếu tôi sử dụng nó trong PHP, sau đó tôi nhận được một lỗi. Nó không giống như "SET @ rank = 0;" bit. Có cách nào để sử dụng "SET @ rank = 0;" khi nó ở trong "$ query ="? Có cách giải quyết nào không?

Phần còn lại của mã là công cụ tiêu chuẩn để kéo dữ liệu từ một db:

public function getmyData() { 


$mysql = mysql_connect(connection stuff); 

$query = "SELECT @rank:[email protected] +1 as rank, formatted_school_name, blah blah"; 

$result = mysql_query($query); 

      $ret = array(); 
       while ($row = mysql_fetch_object($result)) { 
        $tmp = new VOmyData1(); 
        $tmp->stuff1 = $row-> stuff1; 
        $tmp->stuff2 = $row->stuff2; 

        $ret[] = $tmp; 
         } 
       mysql_free_result($result); 

       return $ret; 

    } 

Cập nhật: Tôi đang cố gắng sử dụng gợi ý của việc sử dụng đa truy vấn Amerb của. Tôi nối các truy vấn như vậy:

$query = "SET @rank = 0"; 

$query .= "SELECT @rank:[email protected] +1 as rank... 

Tôi đã thay đổi kết quả để:

$result = $mysqli_multi_query($query); 

Nhưng, nó không vì một lý do. Tôi đang sử dụng máy chạy PHP 5.2. Bất kỳ đề xuất?

+1

Bạn đang sử dụng mã nào để chạy "truy vấn"? Đó thực sự là hai truy vấn (lưu ý dấu chấm phẩy trước 'SELECT') và ít nhất một số ràng buộc PHP MySQL không mong đợi nhiều truy vấn trong cùng một cuộc gọi. – Amber

+0

@Amber, Hi Amber cảm ơn tin nhắn. Tôi đã thêm một số mã nữa. Đó là mã thông thường để lấy dữ liệu từ db. Tôi thấy quan điểm của bạn về ";". Có cách nào để giải quyết vấn đề đó không? Cảm ơn bạn. – Laxmidi

+0

http://php.net/manual/en/mysqli.multi-query.php – Amber

Trả lời

6

This guy here dường như có cách thiết lập biến trong cùng một truy vấn bằng 0. Tuy nhiên, tôi không có MySQL để cài đặt trên máy tính này.

Dưới đây là các truy vấn ông gợi ý trong bài viết trên blog của mình:?

select @rownum:[email protected]+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc limit 10; 

(Có một số bài tập về nhà đến hạn ở đâu đó phải làm với cấp bậc tính Đây là câu hỏi thứ ba tôi đã nhìn thấy trên này trong hai ngày.)

Bạn đang kiểm tra điểm số trùng lặp?

+0

Xin chào @Marvo, Cảm ơn bạn đã liên kết. Điều đó đã giải quyết được vấn đề của tôi. Tôi đang xếp hạng ... Tôi ước rằng tôi vẫn còn là một sinh viên trẻ, sinh viên - đó là những ngày :). Cảm ơn đã giúp đỡ. – Laxmidi

2

Bạn phải bật sử dụng nhiều truy vấn trong một, nhưng tôi đã quên cách thực hiện việc này tại thời điểm này. Đó là một tính năng bảo mật.

1

Hãy thử thực hiện nó dưới dạng 2 truy vấn liên tiếp riêng biệt.

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