我在检索数据时遇到问题,
我有两个文件**list_item.php**
和**mysql_con_links.php**
我的mysql_con_links.php
有一个包含book titles
和view details
的表格,其中包含查看更多详情的链接。
当我点击查看更多详细信息时,我收到此错误:
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_con_links.php**
代码
<?php
include 'library/connect.php';
$result = mysql_query("SELECT * FROM `Books` ORDER BY `Author` DESC");
echo "<table border='1'>
<tr><th>Title</th><th>View Details</th></tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>".$row['Title']."</td>";
?>
<td><a href="list_item.php?id=<? echo $row['book_id'] ?>">view</a></td>
<?php
echo "</td>";
}
echo "</table>";
include 'library/close.php';
?>
答案 0 :(得分:1)
您的错误告诉您正在将布尔值传递给 mysql_fetch_array 函数。这告诉我,错误在于您的 $ book_id 变量。您的 mysql_query()函数很可能会返回“ false ”。
如果我是你,我会确保你将正确类型的变量传递给 mysql_query()。
您可以使用 mysql_real_escape_string 函数将其转义。
$book_id = mysql_real_escape_string($_GET['id']);
或者你可以对id进行类型转换以确保获得一个真正的整数(如果你的id是一个整数)。
$book_id = (int) $_GET['id'];
然后在传递数据之后,记住在将整数传递给MySQL查询时不需要引号。
$result = mysql_query("SELECT * FROM Books WHERE book_id = $book_id");
还要确保设置了$ _GET ['id']。使用 isset()函数。
P.S。我将离开 mysql _ 函数,它们在更高版本的php中被折旧。 Have a read up on PDO
答案 1 :(得分:0)
mysql_query
返回false。您可以通过调用mysql_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");
PS。尽量避免使用mysql_ *函数,不推荐使用它们。