web-dev-qa-db-ja.com

db_query( 'SELECT nid FROM uc_products');結果はありません!どうして?

enabled and working Ubercartに関連する非常に単純なクエリがあり、タスクは_uc_products_テーブルからすべてのnidを取得することですが、結果は何も返されません。

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

しかし、同じデータベースでsame queryを実行するとphpMyAdminit worksとなり、すべての正しい結果が得られます(現在8製品)。

phpMyAdmin screenshot

しかし、次のクエリは正しく機能し、予想されるすべての結果が得られます(vidフィールドは同じタイプですが、別の名前しかないため、最初のクエリは奇妙です):

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

テスト結果のスクリーンショットは次のとおりです。

screenshot of the tests

ご覧のとおり、最初の2つのクエリは結果を返しませんが、他のクエリは正しく機能します。
これは本当に奇妙な問題です。コアモジュールは変更しなかったので、状況がわかりません。それをlocalhostで実行しても、進行中のパブリックサーバーで実行しても、結果は同じです。つまり、条件付きアクションメニューの uc_order_condition_has_products_form() も正しく機能しません。 Drupalでこのような問題に遭遇したことはありません。

デバッグを開始する手掛かりを誰かが持っていますか?

7
Sk8erPeter

私はあなたの最初の結果が「0」であり、phpがそれをFalseとして評価するため、おそらくwhileループの実行を停止するためだと思います。

2
ryancross