警告:mysql_fetch_array()期望参数1是资源,给定布尔值

时间:2011-07-17 12:45:20

标签: php mysql

  

可能重复:
  PHP: Warning: sort() expects parameter 1 to be array, resource given

这是我的代码:我认为没有什么可以导致这个......想法?

警告:mysql_fetch_array()期望参数1是资源,给定布尔值。

 <?php

 include_once "mysql_connect.php";

 if ($_POST['parse_var'] == "contactform"){

 if(is_array($categories)) $whereCond = "in '".implode(",",$categories); else 
 $wherecond  = "= ".$categories;

       $dropdownValue = $_POST['dropdown'];

$dropdownValue = mysql_real_escape_string($dropdownValue);
$dropdownValue = eregi_replace("`", "", $dropdownValue);


$searchField= $_POST['searchinput'];
$searchField = mysql_real_escape_string($searchField);
$searchField = eregi_replace("`", "", $searchField);


if ($dropdownValue == "phone"){
$sql = mysql_query("SELECT * FROM pcparts WHERE phone='$searchField'");


    while($row1 = mysql_fetch_array($sql)){


        $arrayuserinfo[] = array(

            'phone' => $row1["phone"],
        'name' => $row1["name"],
        'city' => $row1["city"],
        'state' => $row1["state"],
        'address' => $row1["address"],
        'zip' => $row1["zip"],
    );
    };
                    for($i=0;$i < count($arrayuserinfo);$i++){

    $phone = $arrayuserinfo[$i]["phone"];
    $name = $arrayuserinfo[$i]["name"];
    $city = $arrayuserinfo[$i]["city"];
    $state = $arrayuserinfo[$i]["state"];
    $address = $arrayuserinfo[$i]["address"];
    $zip = $arrayuserinfo[$i]["zip"];
            echo"<table width='400' border='1' cellpadding='3'>
            <tr>
            <td>phone</td>
            <td>name</td>
            <td>address</td>
            <td>city</td>
            <td>state</td>
            <td>zip</td>
            </tr>
             <tr>
            <td>$phone</td>
            <td>$name</td>
             <td>$address</td>
             <td>$city</td>
            <td>$state</td>
           <td>$zip</td>
       </tr>
        </table><br />
        ";
        }
}

else if ($dropdownValue == "name"){
$sql = mysql_query("SELECT * FROM pcparts WHERE name='$searchField'");


    while($row1 = mysql_fetch_array($sql)){

        $arrayuserinfo[] = array(

        'phone' => $row1["phone"],
        'name' => $row1["name"],
        'city' => $row1["city"],
        'state' => $row1["state"],
        'address' => $row1["address"],
        'zip' => $row1["zip"],
    );
    };

        for($i=0;$i < count($arrayuserinfo);$i++){

    $phone = $arrayuserinfo[$i]["phone"];
    $name = $arrayuserinfo[$i]["name"];
    $city = $arrayuserinfo[$i]["city"];
    $state = $arrayuserinfo[$i]["state"];
    $address = $arrayuserinfo[$i]["address"];
    $zip = $arrayuserinfo[$i]["zip"];

    echo"<table width='400' border='1' cellpadding='3'>
        <tr>
        <td>phone</td>
        <td>name</td>
        <td>address</td>
         <td>city</td>
        <td>state</td>
        <td>zip</td>
        </tr>
         <tr>
        <td>$phone</td>
        <td>$name</td>
       <td>$address</td>
        <td>$city</td>
        <td>$state</td>
        <td>$zip</td>
       </tr>
       </table><br />
        ";
        }
}

else if ($dropdownValue == "city"){
    $sql = mysql_query("SELECT * FROM pcparts WHERE city='$searchField'");


    while($row1 = mysql_fetch_array($sql)){

        $arrayuserinfo[] = array(

        'phone' => $row1["phone"],
        'name' => $row1["name"],
        'city' => $row1["city"],
        'state' => $row1["state"],
        'address' => $row1["address"],
        'zip' => $row1["zip"],
    );
    };

        for($i=0;$i < count($arrayuserinfo);$i++){

    $phone = $arrayuserinfo[$i]["phone"];
    $name = $arrayuserinfo[$i]["name"];
    $city = $arrayuserinfo[$i]["city"];
    $state = $arrayuserinfo[$i]["state"];
    $address = $arrayuserinfo[$i]["address"];
    $zip = $arrayuserinfo[$i]["zip"];

    echo"<table width='400' border='1' cellpadding='3'>
     <tr>
     <td>phone</td>
     <td>name</td>
     <td>address</td>
     <td>city</td>
     <td>state</td>
     <td>zip</td>
     </tr>
       <tr>
    <td>$phone</td>
    <td>$name</td>
    <td>$address</td>
    <td>$city</td>
   <td>$state</td>
    <td>$zip</td>
    </tr>
    </table><br />
     ";
        }
}

      }
      ?>




     <html>
     <body>
      <h2>Customers Database Search</h2>

    <form action="file1.php" method="POST">
    <input type='hidden' name='parse_var' value='contactform'>
    Search fields:
 <select name="dropdown" id="dropdown" >
 <option value="<?php print "$dropdownValue"; ?>"><?php print "$dropdownValue"; ?></option>
  <option value="phone">phone</option>
  <option value="name">name</option>
  <option value="city">city</option>
</select>
 Search item:<input type="text" name='searchinput' id="searchinput" value="
 <?php print "$searchField"; ?>" size='20'><br><br>
 <input type="submit" name="button" id="button" value="Search" />
 </form>
 <br />
  <br />
 </body>
  </html>

的mysql_connect:

   <?php

    $db_host = "localhost";
    $db_username = "user";

     $db_pass = "test1234";

    $db_name = "pcparts";

    @mysql_connect("$db_host","$db_username","$db_pass") or die ("Could not connect to MySQL");
    @mysql_select_db("$db_name") or die ("No database");

    ?>

如果您发现我需要添加的内容,请告诉我确切的位置?

4 个答案:

答案 0 :(得分:6)

您的查询失败,而您忘记使用mysql_error()查找原因。

答案 1 :(得分:2)

发生错误时,

mysql_query会返回FALSE。确保在尝试使用$sql变量之前处理的情况。

答案 2 :(得分:2)

您的一个查询失败,或者您从未有过有效的连接。

@mysql_connect()语句中删除mysql_select_db()。然后在每次调用mysql_query()之后,您需要检查它是否成功:

$sql = mysql_query("SELECT * FROM pcparts WHERE city='$searchField'");
if ($sql) {
  // query was valid -- fetch results.
}
else {
  // something went wrong.
  echo mysql_error();
}

只是一个提示 - 你有一堆堆不必要的代码被复制/粘贴。整个街区:

while($row1 = mysql_fetch_array($sql)){


        $arrayuserinfo[] = array(

            'phone' => $row1["phone"],
        'name' => $row1["name"],
        'city' => $row1["city"],
        'state' => $row1["state"],
        'address' => $row1["address"],
        'zip' => $row1["zip"],
    );
    };
                    for($i=0;$i < count($arrayuserinfo);$i++){

    $phone = $arrayuserinfo[$i]["phone"];
    $name = $arrayuserinfo[$i]["name"];
    $city = $arrayuserinfo[$i]["city"];
    $state = $arrayuserinfo[$i]["state"];
    $address = $arrayuserinfo[$i]["address"];
    $zip = $arrayuserinfo[$i]["zip"];
            echo"<table width='400' border='1' cellpadding='3'>
            <tr>
            <td>phone</td>
            <td>name</td>
            <td>address</td>
            <td>city</td>
            <td>state</td>
            <td>zip</td>
            </tr>
             <tr>
            <td>$phone</td>
            <td>$name</td>
             <td>$address</td>
             <td>$city</td>
            <td>$state</td>
           <td>$zip</td>
       </tr>
        </table><br />
        ";
        }

可简化为:

while($row1 = mysql_fetch_array($sql)) {
  echo"<table width='400' border='1' cellpadding='3'>
      <tr>
            <td>phone</td>
            <td>name</td>
            <td>address</td>
            <td>city</td>
            <td>state</td>
            <td>zip</td>
            </tr>
             <tr>
            <td>{$row1['phone']}</td>
            <td>{$row1['name']}</td>
             <td>{$row1['address']}</td>
             <td>{$row1['city']}</td>
            <td>{$row1['state']}</td>
           <td>{$row1['zip']}</td>
      </tr>
    </table><br />";
}

另一个提示:每次将变量括在这样的引号中时:

mysql_select_db("$db_name")
<?php print "$searchField"; ?>

这是多余的,没有必要。你只需要

mysql_select_db($db_name)
<?php print $searchField; ?>

答案 3 :(得分:0)

知道哪些 3 mysql_fetch_array()调用会导致警告会有所帮助,因为知道$searchField的值是什么,但查看代码呢表明您正在形成的SQL查询无效。失败的查询将返回false而不是mysql资源。