可能重复:
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中给出的布尔值
是我得到的。我不知道这意味着什么。我只是想让它回应出那张桌子上存储的卡片的名字。如果我需要告诉更多信息,请告诉我。感谢您的帮助。
答案 0 :(得分:5)
mysql_query()
返回 FALSE 。当某些错误阻止查询成功完成时会发生这种情况。请查看您连接到数据库的代码,并确保SELECT name FROM card
正在使用该数据库。
要进一步调查,请执行以下操作:
if (!$result) {
die('Invalid query: ' . mysql_error());
}
您将看到MySQL返回的实际错误。
此外,就像有人建议的那样,您可以考虑学习新的(和更好的)数据库交互范例,例如PDO
。 mysql_*
函数是遗留的(已弃用)。
答案 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.';
}