第一次使用php来拉取一个select语句

时间:2012-09-16 18:40:24

标签: php mysql database

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

这就是我所拥有的

<?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中给出的布尔值

是我得到的。我不知道这意味着什么。我只是想让它回应出那张桌子上存储的卡片的名字。如果我需要告诉更多信息,请告诉我。感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

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

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

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

您将看到My​​SQL返回的实际错误。

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

答案 1 :(得分: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 />';
}
?>

答案 2 :(得分:-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.';
}