db_query ('CHỌN nid TỪ uc_products'); không cho kết quả! Tại sao?


7

Có một truy vấn thực sự đơn giản liên quan đến Ubercart được kích hoạt và đang hoạt động , trong đó nhiệm vụ là lấy tất cả các giá trị từ uc_productsbảng, đơn giản là không đưa ra bất kỳ kết quả nào:

$query = 'SELECT nid FROM uc_products';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($nid = db_result($result)) {
    dsm('$nid: '.$nid);
}

NHƯNG khi tôi chạy cùng một truy vấn trong cùng một cơ sở dữ liệu trong phpMyAdmin , nó hoạt động và nó mang lại cho tôi TẤT CẢ các kết quả chính xác (hiện tại tôi có 8 sản phẩm).

Ảnh chụp màn hình phpMyAdmin

NHƯNG các truy vấn sau hoạt động chính xác và cung cấp cho tôi tất cả các kết quả mong đợi (đầu tiên là kỳ lạ nhất, vì vidtrường có cùng loại, nhưng chỉ có một tên khác):

$query = 'SELECT vid FROM uc_products';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($vid = db_result($result)) {
    dsm('$vid: '.$vid);
}

$query = 'SELECT * FROM uc_products';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($row = db_fetch_object($result)) {
    dsm('$row->nid: '.$row->nid);
}

$query = 'SELECT nid FROM node';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($nid = db_result($result)) {
    dsm('$nid: '.$nid);
}

Dưới đây là ảnh chụp màn hình kết quả kiểm tra:

ảnh chụp màn hình của các bài kiểm tra

Như bạn có thể thấy, hai truy vấn đầu tiên không trả về bất kỳ kết quả nào, trong khi các truy vấn khác hoạt động chính xác.
Đây là một vấn đề thực sự kỳ lạ. Tôi đã không sửa đổi các mô-đun cốt lõi, vì vậy tôi không hiểu tình hình. Không quan trọng tôi chạy nó trên localhost hay máy chủ công cộng đang diễn ra, kết quả vẫn như nhau. Điều này có nghĩa là uc_order_condition_has_products_form()trong menu Hành động có điều kiện cũng không hoạt động chính xác. Tôi chưa bao giờ gặp vấn đề như vậy ở Drupal.

Có ai có manh mối nơi tôi nên bắt đầu gỡ lỗi không?


3
Chỉ cần FYI, mã của bạn hoạt động hoàn hảo với tôi trên 3 trang web Ubercart của Drupal (Tôi vừa sao chép / dán mã của bạn vào '/ devel / php /' và tất cả các mã đều được xuất ra trong khu vực tin nhắn như mong đợi) cụ thể để cài đặt của bạn. Rất lạ
Clive

@Clive: cảm ơn câu trả lời của bạn, vâng, bạn hoàn toàn đúng, tôi quên nói rằng tôi cũng đã thử nó trong một phiên bản Drupal 6.22 "rõ ràng" khác (cùng phiên bản "cũ") mà tôi sử dụng để thử nghiệm, và nó hoạt động hoàn toàn tốt Nhưng tôi thậm chí không thể tưởng tượng được loại vấn đề nào có thể có trong phiên bản Drupal này, bởi vì - theo như tôi nhớ - tôi đã không sửa đổi các mô-đun cốt lõi của Drupal. Vì vậy, tôi chỉ đơn giản là không hiểu. Tôi nên cập nhật Drupal của mình, nhưng vẫn không giải thích được tại sao nodeid hoạt động, uc_productsid không hoạt động. Nhưng có lẽ một bản cập nhật có thể loại bỏ bất kỳ loại nội dung lộn xộn nào, tôi không có manh mối ...
Sk8erPeter

@Clive: vui lòng xem câu hỏi cập nhật của tôi ... SELECT * FROM uc_productshoạt động hoàn hảo như nó nên ...: -O Các đề cập trước đây SELECT nid FROM uc_productsvẫn không có.
Sk8erPeter

@Clive: FYI, SELECT vid FROM uc_productscũng hoạt động chính xác! Tại sao Drupal có thể có một vấn đề như vậy với nidlĩnh vực này?
Sk8erPeter

3
bật mô-đun phát và kích hoạt ghi nhật ký qury tại admin / settings / devel - sẽ hiển thị những truy vấn nào đang được chạy trên trang. Có lẽ truy vấn đó đang được sửa đổi bằng cách nào đó trên đường đi?
chào đón

Câu trả lời:


2

Tôi nghĩ rằng có khả năng vì kết quả đầu tiên của bạn là "0" và php sẽ đánh giá đó là Sai, điều này ngăn vòng lặp while của bạn chạy.


Ồ, đã lâu rồi ... Tôi không thể kiểm tra trang web đó nữa, nhưng bạn đã đúng! : DI nghĩ rằng tôi đã không nhận thấy rằng nidgiá trị đầu tiên thực sự bằng 0, điều đó không nên xảy ra, vì vậy theo tôi thì thật bất ngờ (0 vì một id nút không thực sự có ý nghĩa, nên bắt đầu từ 1) - nhưng nó thực sự có thể dừng vòng lặp while ngay lập tức. Cảm ơn! +1 và được chấp nhận. :)
Sk8erPeter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.