2012-12-14 105 views
1
略有不同

我有這樣的MySQL查詢是在MySQL環境中工作正常,但在PHP中運行時不會因爲它顯示區相同的值,PROVINCIA,COMUNA在任何情況下(記錄),而不是屬於每個獨立記錄,因爲它們可能從一個到另一個不同是正確的。MySQL查詢工作,工作臺確定的,但在PHP

我需要找到合適的SQL語句來進行查詢,以便讓我得到查詢中涉及的每個記錄(3)的實際REGION,PROVINCIA,COMUNA。

表pos1postul,pos2pad和pos3mad上的記錄通過字段REGION_ID,PROVINCIA_ID和COMUNA_ID引用表dir_region,dir_provincia和dir_comuna。

任何幫助將不勝感激。

SELECT * FROM db3.pos1postul 

INNER JOIN db3.dir_region AS region1 ON pos1postul.pos1_region=region1.REGION_ID 
INNER JOIN db3.dir_provincia AS provincia1 ON pos1postul.pos1_prov=provincia1.PROVINCIA_ID 
INNER JOIN db3.dir_comuna AS comuna1 ON pos1postul.pos1_comu=comuna1.COMUNA_ID, db3.pos2pad 

INNER JOIN db3.dir_region AS region2 ON pos2pad.pos2_regionpad=region2.REGION_ID 
INNER JOIN db3.dir_provincia AS provincia2 ON  pos2pad.pos2_provpad=provincia2.PROVINCIA_ID 
INNER JOIN db3.dir_comuna AS comuna2 ON pos2pad.pos2_comupad=comuna2.COMUNA_ID, db3.pos3mad 

INNER JOIN db3.dir_region AS region3 ON pos3mad.pos3_regionmad=region3.REGION_ID 
INNER JOIN db3.dir_provincia AS provincia3 ON pos3mad.pos3_provmad=provincia3.PROVINCIA_ID 
INNER JOIN db3.dir_comuna AS comuna3 ON pos3mad.pos3_comumad=comuna3.COMUNA_ID 

WHERE pos1_aluID='n' 
AND pos2_padID=pos1_IDpostulpad 
AND pos3_madID=pos1_IDpostulmad 

PHP代碼:

$idpostul_rsPostul = "-1"; 
if (isset($idpostul)) { 
    $idpostul_rsPostul = $idpostul; 
} 
mysql_select_db($database_conndb3, $conndb3); 
$query_rsPostul = sprintf("SELECT * FROM db3.pos1postul INNER JOIN db3.dir_region AS  region1 ON pos1postul.pos1_region=region1.REGION_ID INNER JOIN db3.dir_provincia AS  provincia1 ON pos1postul.pos1_prov=provincia1.PROVINCIA_ID INNER JOIN db3.dir_comuna AS  comuna1 ON pos1postul.pos1_comu=comuna1.COMUNA_ID, db3.pos2pad INNER JOIN db3.dir_region AS region2 ON pos2pad.pos2_regionpad=region2.REGION_ID INNER JOIN db3.dir_provincia AS provincia2 ON pos2pad.pos2_provpad=provincia2.PROVINCIA_ID INNER JOIN db3.dir_comuna AS comuna2 ON pos2pad.pos2_comupad=comuna2.COMUNA_ID, db3.pos3mad INNER JOIN db3.dir_region AS region3 ON pos3mad.pos3_regionmad=region3.REGION_ID INNER JOIN db3.dir_provincia AS provincia3 ON pos3mad.pos3_provmad=provincia3.PROVINCIA_ID INNER JOIN db3.dir_comuna AS comuna3 ON pos3mad.pos3_comumad=comuna3.COMUNA_ID WHERE pos1_aluID=%s AND pos2_padID=pos1_IDpostulpad AND pos3_madID=pos1_IDpostulmad", GetSQLValueString($idpostul_rsPostul, "int")); 
$rsPostul = mysql_query($query_rsPostul, $conndb3) or die(mysql_error()); 
$row_rsPostul = mysql_fetch_assoc($rsPostul); 
+1

請出示你的PHP代碼。 – Pang

+0

嗨龐,只是添加了PHP代碼。 – Isavma

回答

0
  • 我沒有看到GetSQLValueString()在你的代碼中定義。
    • 我猜測這是一樣的this one?如果是這樣,你的PHP代碼看起來不錯,但距離(在PHP中的SQL pos1_aluID='n'在原來的SQL與pos1_aluID=<some integer here>)你原來的SQL不同。
    • 我建議你打印出你的PHP中的SQL(print $query_rsPostul;),複製&粘貼到Workbench,然後運行它並檢查它是否是你想要的。
  • 我看不到你如何在你的代碼中使用mysql_fetch_assoc()的結果。

    • mysql_fetch_assoc()只得到結果集的一個一行。要獲得所有的行,使用一個循環,例如

      while ($row_rsPostul = mysql_fetch_assoc($rsPostul)) { 
          // Do something with $row_rsPostul here. 
      } 
      

EDIT(2012年12月16日):

  • 也許你有你的查詢結果相同名稱的列?

    • 您需要使用列別名,例如,

      SELECT region1.REGION_ID as region1_REGION_ID, 
           region2.REGION_ID as region2_REGION_ID, 
           region3.REGION_ID as region3_REGION_ID, 
           .... 
      

      然後,你可以通過使用$row_rsPostu["region1_REGION_ID"]$row_rsPostu["region2_REGION_ID"]訪問它們,等

  • 也許你沒有設置字符爲您的數據庫連接設置?

  • 仔細檢查你的數據庫名稱($database_conndb3)和連接參數(即那些你把mysql_connect()。確保它們是相同的那些你工作臺使用。


最後,請注意,舊的mysql PHP中的擴展已從PHP 5.5.0棄用,並將在未來刪除。請參閱

+0

''''函數GetSQLValueString()'是Dreamweaver使用的典型代碼,原始代碼看起來像這樣'pos1_aluID =%s',但是我使用'n'來表示它可以獲得任何記錄ID。 '*'我已經將代碼複製並粘貼到Workbench中幾次,並有變化等,但結果並不正確。 ($ rsPostul = mysql_query($ query_rsPostul,$ db3)或者die(mysql_error()); $ row_rsPostul = mysql_fetch_assoc($ rsPostul);這樣就可以實現這個功能了。 '。 '''是的,我知道不推薦使用的mysql擴展,我需要改變它。 – Isavma

+0

編輯我的答案,增加了幾個可能的解決方案。 – Pang

相關問題