2012-08-12 21 views
0

MySQL的是做精mysqli的創建,直到選擇時:之前我用/mysqli_fetch_array:未定義指數從多個表

mysql_fetch_array()。但是,當我使用mysqli_fetch_array(){Notice「i」}時,從多個表中進行選擇時,從ASSOCIATIVE數組獲取結果時出現問題。也就是,

$query = "SELECT t1.id, t2.id FROM t1, t2 WHERE ..."; 
$result = mysqli_query($conn,$query); 
//if num of rows check... 
while($row = mysqli_fetch_array($result)) 
{ $first_id = $row['t1.id']; $second_id = $row['t2.id']; } 

而且,我得到一個錯誤:未定義的索引:t1.id(或t2.id)。

查詢工作正常,如果我只選擇從t1或t2(不是兩個)或如果我說$ row ['id'];而不是$ row ['t1.id'];但那不能幫助從兩個具有相同名稱的表中獲得不同的字段

請幫忙。

謝謝! =)

+0

使用字段的別名。我甚至不知道mysql允許指定't1.id'作爲數組索引 – knittl 2012-08-12 08:58:27

回答

0

你的代碼在分離t1.id和t2.id時出現了問題,結果會以「id」的形式返回它們。

嘗試在查詢中使用AS替換列重命名/別名;

$query = "SELECT t1.id AS t1id, t2.id AS t2id FROM t1, t2 WHERE ..."; 
$result = mysqli_query($conn,$query); 
//if num of rows check... 
while($row = mysqli_fetch_array($result)) 
{ $first_id = $row['t1id']; $second_id = $row['t2id']; } 
+0

謝謝!就是這樣。我只是意識到,不像mysql_result mysqli_fetch_array不能訪問具有相同名稱的字段。所以,任何人都可以使用「AS」關鍵字(如您所建議的),或者可以使用數字索引(數值數組)。如果將傳統的mysql_result()與mysqli(i =改進的)進行比較,我相信這是愚蠢的,是的。再次感謝您的及時幫助! – 2012-08-12 09:05:30

+0

「如果結果的兩列或多列具有相同的字段名稱,則最後一列將優先並覆蓋較早的數據。爲了訪問具有相同名稱的多列,必須使用行的數字索引版本。 「[鏈接](http://www.php.net/manual/en/mysqli-result.fetch-array.php) – 2012-08-12 09:07:36