0

我真的不知道为什么这不起作用。我想要做的只是获取数据库中的所有电子邮件,然后回显它们,但无论我尝试什么,mysql_fetch_array 都不起作用。不是 SQL 查询不起作用,因为我添加了一个 if 语句,如果它不起作用,它就会死掉,不仅如此,我还在 PHPMyAdmin 上进行了完全相同的查询,并且它有效.

这是我的代码

<?php
$dbc = mysql_connect('localhost', 'root', ''); //host, username, pass
$db = mysql_select_db('habbo', $dbc);

if(!$dbc || !$db)
    die("Unknown Error.");

$sql = "SELECT `email` FROM `logininfo` WHERE `id` = '1'";
mysql_query($sql);

if(!$sql)
    die(mysql_error());

while($row = mysql_fetch_array($sql))
    echo $row['email'] . " ";

?>

所以,我不知道发生了什么,我的两个错误陷阱都没有出现,当我进入页面时我只是得到一个错误

Warning: mysql_fetch_array() expects parameter 1 to be resource, string given on line 14

我假设这意味着查询被破坏了,但查询不是,因为就像我之前所说的,我已经设置了错误陷阱,并在 PHPMyAdmin 中尝试了查询,所以它可能是 XAMPP 的问题,或者其他什么。我重新启动了 Apache 和 MySQL,但仍然出现同样的错误。

4

4 回答 4

1

您正在尝试从 sql 文本中获取结果,而不是查询结果;

$sql = "SELECT `email` FROM `logininfo` WHERE `id` = '1'";
$res = mysql_query($sql);

if(!$res)
    die(mysql_error());

while($row = mysql_fetch_array($res))
    echo $row['email'] . " ";
于 2013-07-28T18:07:29.057 回答
0

您没有将mysql_query($sql)函数的结果设置为变量。因此,您在代码的后半部分使用字符串。

尝试这个:

<?php
$dbc = mysql_connect('localhost', 'root', ''); //host, username, pass
$db = mysql_select_db('habbo', $dbc);

if(!$dbc || !$db)
    die("Unknown Error.");

$sql = "SELECT `email` FROM `logininfo` WHERE `id` = '1'";
$result = mysql_query($sql);

if(!$result)
    die(mysql_error());

while($row = mysql_fetch_array($result))
    echo $row['email'] . " ";
?>
于 2013-07-28T18:20:12.640 回答
0

$sql应该是一个mysql_query()。可能还添加 MYSQL_ASSOC

就像是:

$result = mysql_query("SOME QUERY");
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    echo $row['email'] . " ";
}
于 2013-07-28T18:10:35.637 回答
0

$sql实际上是一个字符串,而不是您从 MySQL 访问结果所需的资源。

您需要存储 的结果mysql_query(),检查 THAT 是否为假并调用mysql_error(),否则将其传递给mysql_fetch_array().

于 2013-07-28T18:07:08.583 回答