2013-02-13 109 views
0

我一直在工作日解決這個小問題。與聯盟選擇的問題

我想通過使用UNION從兩個表中獲取數據。但返回此錯誤代碼:

警告:mysql_fetch_array()預計參數1是資源,布爾給出.....

這是什麼意思,什麼我做錯了?

我的代碼行看起來是這樣的:

$結果= mysql_query( 「SELECT * FROM $ tablet1 WHERE ID1 = $ cho1 UNION SELECT * FROM $ tablet2 WHERE ID2 = 21」);

回答

0

請確保兩個表格列的數據類型和列號相同。

1

您的查詢失敗並返回FALSE而不是生成查詢資源。這就是爲什麼mysql_fetch_array()返回一個錯誤。

總是檢查返回值。你可以像下面這樣做

$result = mysql_query("SELECT ..."); 
if ($result) { 
    //Iterate through the resultset 
    while ($row = mysql_fetch_assoc($result)) { 
    ... 
    } 
} else { 
    echo 'Invalid query: ' . mysql_error(); 
    //Do whatever you need to do to recover 

} 

正如其他提議的檢查,並確保在UNION重返這兩個SELECT語句中相應的位置相同列數和列具有相同的數據類型。

請參見各相應位置列出的更多13.2.8.4. UNION Syntax

所選列選擇 語句應該具有相同的數據類型。 (例如,第一個語句選擇的第一列 應該有作爲 由其它語句選擇的第一列的類型相同。)

作爲一個方面說明:請不要使用mysql_ *新代碼的功能。他們是deprecated as of PHP 5.5.0。使用prepared statementsPDOMySQLi。這是好的PDO tutorial。而且你的代碼對於sql注入是開放的。再次使用準備好的語句。

0

請檢查下面的代碼:

$result = mysql_query("SELECT T1.column1,T1.column2,T1.column3,T1.column4,T1.column5 
         FROM $tablet1 T1 WHERE T1.id1=$cho1 

         UNION 

         SELECT T2.column1,T2.column2,T2.column3,T2.column4,T2.column5 
         FROM $tablet2 T2 WHERE T2.id2=21 
         "); 

列在表1和它的數據類型在表1的數應與表2。

0

首先,您需要檢查列和數據類型的數量,因爲您使用的是UNION運算符,所以在這兩個查詢中我都應該相同。

現在,如果你想使用mysql_fetch_array:

的mysql_fetch_array函數一條MySQL查詢資源作爲參數($結果),並返回該請求mysql_query返回數據的第一行。

像代碼bewlo:

<?php 
// Make a MySQL Connection 
$query = "SELECT * FROM example"; 

$result = mysql_query($query) or die(mysql_error()); 


while($row = mysql_fetch_array($result)){ 
    echo $row['name']. " - ". $row['age']; 
    echo "<br />"; 
} 
?> 
+0

感謝您的幫助, – user2067225 2013-02-16 05:03:16