0

私はこの小さな問題を解決するために何日も働いてきました。

UNIONを使用して2つのテーブルからデータを取得しようとしています。しかし、戻り値は次のエラーコードです。

警告:mysql_fetch_array()は、パラメーター1がリソースであると想定しています。ブール値は....で指定されています。

それはどういう意味ですか、そして私は何を間違っているのですか?

私のコード行は次のようになります。

$ result = mysql_query( "SELECT * FROM $ tablet1 WHERE id1 = $ cho1 UNION SELECT * FROM $ tablet2 WHERE id2 = 21");

4

4 に答える 4

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構文

各SELECTステートメントの対応する位置にリストされている選択された列は、同じデータ型である必要があります。(たとえば、最初のステートメントで選択された最初の列は、他のステートメントで選択された最初の列と同じタイプである必要があります。)

補足として:新しいコードにmysql_*関数を使用しないでください。これらはPHP5.5.0で非推奨になりました。PDOまたはMySQLiのいずれかでプリペアドステートメントを使用 します。これが良いPDOチュートリアルです。そして、あなたのコードはsql-injectionsに対して広く開かれています。もう一度、プリペアドステートメントを使用します。

于 2013-02-13T06:10:13.137 に答える
0

まず、UNION 演算子を使用しているため、両方のクエリで列とデータ型が同じであることを確認する必要があります。

mysql_fetch_array を使用する場合:

mysql_fetch_array 関数は、MySQL クエリ リソースを引数 ($result) として受け取り、mysql_query によって返されたデータの最初の行を返します。

以下のコードのように:

<?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 />";
}
?>
于 2013-02-13T07:52:55.857 に答える
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 と一致する必要があります。

于 2013-02-13T06:13:41.150 に答える
0

両方のテーブル列のデータ型と列番号が同じであることを確認してください。

于 2013-02-13T06:08:14.090 に答える