[英]Nesting SQL queries in PHP
在PHP中嵌套SQL查詢似乎有點擔心。 我需要一個SQL查詢來填充drupal表單中的選項,我使用了以下查詢。
SELECT data FROM webform_submitted_data WHERE nid = 1124 and cid = 4 and
data not in (SELECT data FROM webform_submitted_data where nid = 1127 and cid = 11 group by data having COUNT(*) > 5)
這個查詢在phpMyAdmin中運行得很好,但是當我使用db_query在PHP代碼(下面給出)中嘗試它時,它不起作用(沒有返回任何內容)。
$array = array();
$sql = db_query("SELECT data FROM webform_submitted_data WHERE nid = 1124 and cid = 4 and data not in (SELECT data FROM webform_submitted_data where nid = 1127 and cid = 11 group by data having COUNT(*) > 5)");
while($row = db_fetch_object($sql)) {
$array[$row->data] = $row->data;
}
return $array;
任何人都可以在我的查詢或代碼中糾正我的錯誤嗎? 另外,有沒有辦法在PHP中實現此查詢?
抬頭,你沒有使用相同的查詢! 當您告訴我們第一個查詢是您要查找其結果的查詢時,請將PHP更改為您在phpMyAdmin中運行的實際查詢:
$sql = db_query("SELECT data FROM webform_submitted_data WHERE nid = 1124 and cid = 4 and not EXISTS (SELECT data FROM webform_submitted_data where nid = 1127 and cid = 11 group by data having COUNT(*) > 5)");
更新
您注意到兩個查詢都應該有效,但沒有一個有效。 我假設你沒有提出任何錯誤
(沒有返回)
我認為這個查詢沒有任何理由不起作用。 確保您連接到同一個數據庫。
是否值得指出兩個查詢不一樣?
來自phpMyAdmin的第一個查詢使用AND NOT EXISTS (...subquery...)
。
第二個使用and data not in (... subquery ... )
。
意味着不同的行為。
編輯
在Drupal 6中, data
在字段webform_submitted_data
是mediumtext
字段。 將其內容用作數組鍵可能不是一個好主意。 如何更改您的查詢如下:
$array = array();
$sql = db_query("SELECT data FROM webform_submitted_data WHERE nid = 1124 and cid = 4 and data not in (SELECT data FROM webform_submitted_data where nid = 1127 and cid = 11 group by data having COUNT(*) > 5)");
while($row = db_fetch_object($sql)) {
$array[] = $row->data; // <<<<----- updated array push
}
return $array;
這樣,您仍然可以獲得一系列結果,但無需使用長字符串值作為鍵並可能覆蓋重復項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.