php和MySQL检索数据
我在检索数据时遇到问题 我有两个文件php和MySQL检索数据,php,mysql,Php,Mysql,我在检索数据时遇到问题 我有两个文件**list\u item.php**和**mysql\u con\u links.php** Mymysql\u con\u links.php有一个带有书籍标题的表,以及带有查看更多详细信息链接的查看详细信息 单击“查看更多详细信息”时,出现以下错误: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/ob219/public_ht
**list\u item.php**
和**mysql\u con\u links.php**
Mymysql\u con\u links.php
有一个带有书籍标题的表,以及带有查看更多详细信息链接的查看详细信息
单击“查看更多详细信息”时,出现以下错误:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/ob219/public_html/three/list_item.php on line 10
我的**list_item.php**
代码:
<?php
include 'library/connect.php';
$book_id =$_GET['id'];
$result = mysql_query("SELECT * FROM Books WHERE book_id = '$book_id'");
echo "<table border = '1'><tr><th>Title</th><th>Author</th><th>Category</th></tr>";
while($row = mysql_fetch_array($result)) // !!!problem here!!!
{
echo "<tr>";
echo "<td>" .$row['Title']. "</td>";
echo "<td>" .$row['Author']. "</td>";
echo "<td>" .$row['Category']. "</td>";
echo "</tr>";
}
echo "</table>";
include 'library/close.php';
?>
<a href="mysql_con_links.php">Back</a>
mysql\u query
如果处理查询时出错,则返回false。通过调用mysql\u error
函数可以看到此错误
我试图改进您的代码,并评论了我的操作:
$book_id = $_GET['id'];
//Escape the variable before you pass it to MySQL:
$book_id = mysql_real_escape_string($book_id);
//remove quotes, if it's an integer value
$result = mysql_query("SELECT * FROM Books WHERE book_id = $book_id");
注意:尽量避免使用mysql_*函数,它们已被弃用。您的错误告诉您正在向mysql_fetch_数组传递布尔值。这就告诉我错误在于$book\u id变量。您的mysql\u query()函数很可能返回“false”
如果我是你,我会确保你将正确类型的变量传递给你的mysql\u query()
您可以使用mysql\u real\u escape\u string函数对其进行转义
$book_id = mysql_real_escape_string($_GET['id']);
或者,您可以键入id以确保获得真实的整数(如果您的id是整数)
然后在传递数据之后,记住在向MySQL查询传递整数时不需要引号
$result = mysql_query("SELECT * FROM Books WHERE book_id = $book_id");
还要确保设置了$_GET['id']。使用isset()函数
p、 我将不再使用mysql函数,它们在php的更高版本中会贬值 阅读文档:mysql\u query
可以在失败时返回false他称之为book\u id
,但我认为假设它是数据库中的int
值是一个int(自动递增)@Sinomai你是对的。但通常,主键是int。PO只是说,它是int,所以没关系。@如果我的修改没有帮助,请在mysql\u查询后调用mysql\u error并打印结果。同时打印查询并尝试通过phpmyadmin将其提交到数据库。@user4035 thak you,你的意思是什么?谢谢你的回答,不幸的是,尽管错误消失了,但信息仍然没有显示。好的,这说明数据库无法识别你传递的ID。您可以转储以下变量吗?变量转储($book\u id);var_dump(mysql_fetch_数组($result));这将告诉我们数据库正在获取什么数据以及返回什么。这是结果啊,我看到了问题。在mysql_con_links.php页面中,将代码更改为:没问题,我们都这么做。
$book_id = (int) $_GET['id'];
$result = mysql_query("SELECT * FROM Books WHERE book_id = $book_id");