有効で機能している 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);
}
しかし、phpMyAdminの同じデータベースで非常に同じクエリを実行すると、それが機能し、すべての正しい結果が得られます(現在、8つの製品があります)。
しかし、次のクエリは正しく機能し、予想されるすべての結果が得られます(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);
}
テスト結果のスクリーンショットは次のとおりです。
ご覧のとおり、最初の2つのクエリは結果を返しませんが、他のクエリは正しく機能します。
これは本当に奇妙な問題です。コアモジュールは変更しなかったので、状況がわかりません。localhostで実行していても、進行中のパブリックサーバーで実行しても、結果は同じです。これはuc_order_condition_has_products_form()
、条件付きアクションメニューでも正しく機能しないことを意味します。Drupalでこのような問題に遭遇したことはありません。
誰かがデバッグを開始する手掛かりを持っていますか?
3
参考までに、あなたのコードは3つのDrupal 6 Ubercartサイトで完璧に機能します(コードを '/ devel / php /'にコピー/貼り付けただけで、すべてのnidが期待どおりにメッセージ領域に出力されました)。インストールに固有。非常に奇妙です
—
クライブ
@Clive:回答に感謝します。はい、あなたは完全に正しいです。私がテストに使用した別の「クリア」Drupal 6.22(同じ「古い」バージョン)でもテストしたことを忘れていました。まったく問題なく動作します。しかし、私がDrupalのコアモジュールを変更しなかったため、このバージョンのDrupalでどのような問題が発生するか想像もできません。だから私は単に理解していません。Drupalを更新する必要がありますが、
—
Sk8erPeter
node
IDが機能する理由が説明されていません。ID が機能しないのはなぜですかuc_products
。しかし、アップデートにより、あらゆる種類の厄介なものが削除される可能性があります。私には手掛かりがありません...
@Clive:更新された質問を参照してください...正常に
—
Sk8erPeter
SELECT * FROM uc_products
機能します...:-O以前に述べたように、SELECT nid FROM uc_products
まだ機能しません。
@クライヴ:参考までに、
—
Sk8erPeter
SELECT vid FROM uc_products
正しく動作します!Drupalがnid
フィールドでこのような問題を抱えているのはなぜですか?
develモジュールをオンにして、admin / settings / develでquryロギングを有効にします。これにより、ページで実行されているクエリが表示されます。たぶんそのクエリは途中で何らかの形で変更されていますか?
—
5