可能重复:
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");
?>
如果您发现我需要添加的内容,请告诉我确切的位置?
答案 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资源。