-2

こんにちは、私はここに来たばかりで、このコードを分析するのに苦労しています。エラーが表示され続け、何をすべきかわかりません。

mysql_fetch_array() は、パラメーター 1 がリソースであると想定し、ブール値が与えられます

これは、検索を使用するたびに発生します。何か案は?

    if(isset($_POST['search']))//if search
    {   
        if(($_POST['year']) && ($_POST['month']) && ($_POST['day']))
        $_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' AND edate = '".$_POST['day']."' ;" or die(mysql_error()));

        else if(($_POST['year']) && ($_POST['month']))
        $_SESSION['select']=mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' ;" or die(mysql_error()));

        else if(isset($_POST['year']))
        $_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' ;" or die(mysql_error()));

        else if(!$_POST['year'])
        die("FILL IN AT LEAST THE YEAR");

        else
        die("Date not found"); 


        if($_POST['year'])
            while($select2 = mysql_fetch_array($_SESSION['select']))
            {
                $n1 = $select2[0];
                $n2 = $select2[1];
                $n3 = $select2[2]."-".$select2[3]."-".$select2[4];

                echo
                "<tr>
                <td width=\"30px\"> $n1</td>
                <td width=\"30px\"> $n2</td>
                <td width=\"30px\"> $n3</td>
                </tr>";
            }
4

4 に答える 4

0

あなたのmysql_query()各行は間違っています。を追加するに括弧を閉じる必要がありますor die()

これが、エラーで死ぬ代わりにブール値を取得している理由です。

于 2012-08-30T13:14:37.290 に答える
0
$_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' AND edate = '".$_POST['day']."' ;" or die(mysql_error()));

する必要があります

$_SESSION['select']= mysql_query("SELECT * FROM ".$_SESSION['dbtable3']." WHERE eyear = '".$_POST['year']."' AND emonth = '".$_POST['month']."' AND edate = '".$_POST['day']."' ;") or die(mysql_error());

つまり、 は の外側or die(mysql_error())にある必要があります。 mysql_query

それ、またはサニタイズされていないPOSTパラメーターを介して SQL を挿入しています。

于 2012-08-30T13:14:45.773 に答える
0

はい、エラーはすべてを示しています

あなたは

while($select2 = mysql_fetch_array($_SESSION['select']))

使用する

$result = mysql_fetch_array($_SESSION['select']));

if($result) {
// go to while
} else {
  mysql_error();
}
于 2012-08-30T13:15:19.690 に答える
0

クエリに問題があります:

SELECT、SHOW、DESCRIBE、EXPLAIN、および結果セットを返すその他のステートメントの場合、mysql_query() は成功するとリソースを返し、エラーの場合は FALSE を返します。

アルト、あなたのコードには問題があります: PDOまたはのmysql_*関数を削除してください。それらは非推奨です:msqli_*

推奨される代替案

この拡張機能の使用はお勧めできません。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQ も参照してください。この機能の代替手段は次のとおりです。

  • mysqli_query()
  • PDO::クエリ()
于 2012-08-30T13:16:05.963 に答える