-1

可能重复:
mysql_fetch_array() 期望参数 1 是资源,选择中给出的布尔值

这就是我所拥有的

<?php 
            mysql_select_db("my_db", $conn);

            $result = mysql_query("SELECT name FROM card");

            while($row = mysql_fetch_array($result))
            {
            echo $row['name'];
            echo "<br />";
            }
?>

警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 113 行的 D:\xampp\htdocs\UFSDBSearch.php 中给出

就是我得到的。我不知道那是什么意思。我只是想让它呼应存储在该桌子上的卡片的名称。如果我需要告诉我更多信息,请告诉我。我在这里先向您的帮助表示感谢。

4

3 回答 3

5

mysql_query()返回FALSE。当某些错误阻止查询成功完成时,就会发生这种情况。请检查您连接到数据库的代码,并确保SELECT name FROM card正在使用该数据库。

要进一步调查,请执行以下操作:

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

您将看到 MySQL 返回的实际错误。

此外,就像有人建议的那样,您可以考虑学习新的(和更好的)数据库交互范例,例如PDO. mysql_*函数是遗留的(已弃用)。

于 2012-09-16T18:44:12.410 回答
2

PDO比. _ _mysql_

<?php
$db = new PDO('mysql:host=localhost;dbname=my_db', 'username', 'password');
// The next line is only needed if you are using prepared statements,
// see the next block of code below
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$query = $db->query('SELECT name FROM card');
$rows = $query->fetchAll();
foreach($rows as $row) {
    echo $row['name'] . '<br />';
}
?>

编辑:如果您使用的是动态查询,则应使用以下内容:

<?php
$db = new PDO('mysql:host=localhost;dbname=my_db', 'username', 'password');
// Turn off prepare emulation, *this is good practice*
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$query = $db->prepare('SELECT name FROM card WHERE id = ?');
$query->execute(array($_GET['id']));
$rows = $query->fetchAll();
foreach($rows as $row) {
    echo $row['name'] . '<br />';
}
?>
于 2012-09-16T19:03:46.893 回答
-1

尝试以下方法,看看它是否对您有帮助。它有更多的错误报告。

mysql_select_db("my_db", $conn);

$result = mysql_query("SELECT name FROM card") or die(mysql_error());

if (mysql_num_rows($result) > 0)
{
    while($row = mysql_fetch_array($result))
        {
        echo $row['name'];
        echo "<br />";
        }
}
else{
    echo 'There were no results found.';
}
于 2012-09-16T18:47:24.813 回答