我一直在工作日解決這個小問題。與聯盟選擇的問題
我想通過使用UNION從兩個表中獲取數據。但返回此錯誤代碼:
警告:mysql_fetch_array()預計參數1是資源,布爾給出.....
這是什麼意思,什麼我做錯了?
我的代碼行看起來是這樣的:
$結果= mysql_query( 「SELECT * FROM $ tablet1 WHERE ID1 = $ cho1 UNION SELECT * FROM $ tablet2 WHERE ID2 = 21」);
我一直在工作日解決這個小問題。與聯盟選擇的問題
我想通過使用UNION從兩個表中獲取數據。但返回此錯誤代碼:
警告:mysql_fetch_array()預計參數1是資源,布爾給出.....
這是什麼意思,什麼我做錯了?
我的代碼行看起來是這樣的:
$結果= mysql_query( 「SELECT * FROM $ tablet1 WHERE ID1 = $ cho1 UNION SELECT * FROM $ tablet2 WHERE ID2 = 21」);
請確保兩個表格列的數據類型和列號相同。
您的查詢失敗並返回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 statements與PDO或MySQLi。這是好的PDO tutorial。而且你的代碼對於sql注入是開放的。再次使用準備好的語句。
請檢查下面的代碼:
$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。
首先,您需要檢查列和數據類型的數量,因爲您使用的是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 />";
}
?>
感謝您的幫助, – user2067225 2013-02-16 05:03:16