php和MySQL检索数据

时间:2013-12-06 13:40:38

标签: php mysql

我在检索数据时遇到问题,

我有两个文件**list_item.php****mysql_con_links.php**

我的mysql_con_links.php有一个包含book titlesview 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';
    ?>

2 个答案:

答案 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_ *函数,不推荐使用它们。