-2

重複の可能性:
mysql_fetch_array() は、パラメーター 1 がリソースであると想定しており、select でブール値が指定されています

警告: mysql_fetch_assoc() は、パラメーター 1 がリソースであると想定しており、36 行目の home/public_html/ で指定されたブール値です。

警告: mysql_fetch_assoc() は、パラメーター 1 がリソースであると想定しており、42 行目の home/public_html/ で指定されたブール値です。

この2行のコードの36行目と42行目にエラーが表示されます

このエラーを修正する方法を教えてください

これは私のコードです

<?php

//get date
$button = $_GET['submit'];
$search = $_GET['search'];

if (!$button)
   echo "Type Name";
else
{
    if (strlen($search)<=3)
   echo "The item you searched for was to small";
    else
   {
     echo "You searched for <b>$search</b> <hr size='1'>";

     //connect to database

     mysql_connect('localhost','wh_num','password.');
     mysql_select_db('wh_num');

 //explode search term
           $search_exploded = explode(" ",$search);
           foreach($search_exploded as $search_each)
{
    $str = mysql_real_escape_string(substr($search_each, 0, 6));
    //construct query
    $x++;
    if ($x==1) $construct .= "keyword LIKE '$str%'";
    else       $construct .= " OR keyword LIKE '$str%'";
}

    $construct = "SELECT * FROM location WHERE $construct";
     $run = mysql_query($construct);

     $foundnum = mysql_num_rows($run);

     if ($foundnum==0)
        echo "No results found.";
     {

       echo "$foundnum results found.<p><hr size='1'>";

       while ($runrows = mysql_fetch_assoc($run))
       {

        //get data
        $email = $runrows['email']; 
        $area = $runrows['area'];
          echo "<b><font face=tahoma size=4 color=#600000> Name</b><b> <font face=tahoma size=4 color=#00AAFF> $search<BR></FONT></b>";
        echo "<b><font face=tahoma size=4 color=#600000> Email :</b><b><font face=tahoma size=4 color=#FF9933> $email<BR></FONT></b>
            <b><font face=tahoma size=4 color=#600000> Location :</b><b><font face=tahoma size=4 color=#FF0066> $area<BR></FONT></b>";



       }

     }



    }
}


?>
4

2 に答える 2

0

リソースがfalseの場合、クエリは失敗します....あなたの間違いはあなたの場所の連結だと思います...

配列をいじって、正しい mysql where ステートメントを作成します。

$where = array();
if ($x==1) $where[] = "keyword LIKE '$str%'";
else       $where[] = "keyword LIKE '$str%'";


$construct = "SELECT * FROM location";
if(count($where) > 0) {
    $construct .= ' WHERE '.implode(' OR ', $where);
}

あなたのコード

<?php

//get date
$button = $_GET['submit'];
$search = $_GET['search'];

if (!$button)
    echo "Type Name";
else
{
    if (strlen($search)<=3)
        echo "The item you searched for was to small";
    else
    {
        echo "You searched for <b>$search</b> <hr size='1'>";

        //connect to database

        $link = mysql_connect('localhost','wh_num','password.');
        mysql_select_db('wh_num');

        //explode search term
        $search_exploded = explode(" ",$search);
        $where = array();
        foreach($search_exploded as $search_each)
        {
            $str = mysql_real_escape_string(substr($search_each, 0, 6));
            //construct query

            if ($x==1) $where[] = "keyword LIKE '$str%'";
            else       $where[] = "keyword LIKE '$str%'";
        }

        $construct = "SELECT * FROM location";
        if(count($where) > 0) {
            $construct .= ' WHERE '.implode(' OR ', $where);
        }
        $run = mysql_query($construct);
                if(strlen(mysql_error($link)) > 0) {
                         echo 'SQL error: '.mysql_error($link); exit;
                    }
        $foundnum = mysql_num_rows($run);

        if ($foundnum==0)
            echo "No results found.";
        {

            echo "$foundnum results found.<p><hr size='1'>";

            while ($runrows = mysql_fetch_assoc($run))
            {

                //get data
                $email = $runrows['email'];
                $area = $runrows['area'];
                echo "<b><font face=tahoma size=4 color=#600000> Name</b><b> <font face=tahoma size=4 color=#00AAFF> $search<BR></FONT></b>";
                echo "<b><font face=tahoma size=4 color=#600000> Email :</b><b><font face=tahoma size=4 color=#FF9933> $email<BR></FONT></b>
            <b><font face=tahoma size=4 color=#600000> Location :</b><b><font face=tahoma size=4 color=#FF0066> $area<BR></FONT></b>";



            }

        }



    }
}


?>
于 2012-11-27T06:17:29.397 に答える
0

ELSE 部分から OR を削除してから試してください: else $construct .= "keyword LIKE '$str%'";

于 2012-11-27T06:46:31.663 に答える