<html>
<title>Title</title>
<body>
<link type="text/css" rel="stylesheet" href="css/bootstrap.css"/>
</body>
<center>
<?
mysql_connect ("localhost", "root","") or die (mysql_error());
mysql_select_db ("dbname");
$term = $_POST['term'];
$sql = mysql_query("select * from items where name like '%$term%'");
while ($row = mysql_fetch_array($sql)){
echo '<table class="table - striped"> <theader> <tr> <th>ID</th> <th></br> Name</th></tr>'; echo ' <tbody><td>'.$row['id']; echo'</td>';
echo '<td>'; echo '</theader>' .$row['name']; echo '</td>';
echo '';
}
?>
</center>
<script src="js/bootsrap.js"> </script>
</html>
我收到此错误:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/runedev1/public_html/itemdb/search.php on line 19
当我使用Xampp在localhost上运行代码时,它运行正常,当我将其上传到Web主机时,会出现错误。
是的,我在将数据库名称,用户和密码放在webhost上时会更改它。
答案 0 :(得分:1)
您的MySQL查询失败。这意味着你传递mysql_fetch_array一个布尔值,“false”。
这很可能是因为您在上传时忘记更改MySQL服务器,用户名和密码。确保为mysql_connect()提供正确的参数;如果这些细节不正确,应该触发die() - 通常的做法是在mysql_select_db之后使用这个die()语句;不是mysql_connect()。这让我怀疑你可能选择了错误的数据库;因为你没有检查这是否有任何错误。
mysql_connect ("localhost", "root",""); //ensure these details are correct!!
mysql_select_db ("dbname") or die (mysql_error());
我会检查你是mysql_query()的SQL语法,并确保你的服务器上的表结构与本地主机服务器上的表结构相同。另外考虑使用PDO或mysqli *函数,mysql *函数已经过时了。
最后一点值得思考,特别是因为你的代码中有一个巨大的SQL注入漏洞!查看这些漏洞并尽快更改,
/* $term is supplied by the browser headers;
** meaning an attacker can set it to whatever they desire.. */
$term = $_POST['term'];
/* $term is then sent in the database query as-is;
** with no checking or sanitisation; this means they can supply their own query..! */
$sql = mysql_query("select * from items where name like '%$term%'");
当我得到类似的错误,mysql_query()返回false时,我将查询字符串回显到屏幕并在phpmyadmin或类似地运行它以查看它返回的内容,或者在需要时修复它。即。
/* Generate the query string -before- running it.. */
$query = sprintf("select * from items where name like '%s'", $term);
/* ... print the query string to the page... */
print $query;
/* ... and then run it. */
$sql = mysql_query( $query );
/* Alternatively, only print the query string when an error occurs */
if(! $sql) print sprintf("Error with SQL String: '%s'!", $query);
(另外,在您发布之前进行搜索!“相关帖子”中列出的每个单个帖子与您的标题基本相同,并且涵盖了完全相同的错误;该错误包含一个非常简单的解释 - 查询失败。)