Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php和MySQL检索数据_Php_Mysql - Fatal编程技术网

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**

My
mysql\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");