我试图从一个MySQL表中选择数据,但我得到以下错误消息之一:

Mysql_fetch_array()期望参数1为给定的资源布尔值

这是我的代码:

$username = $_POST['username'];
$password = $_POST['password'];

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

while($row = mysql_fetch_array($result)) {
    echo $row['FirstName'];
}

当前回答

如果检查时没有出现任何MySQL错误,请确保正确创建了数据库表。这发生在我身上。寻找任何不需要的逗号或引号。

其他回答

这个查询应该工作:

$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'");
while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}

问题是单引号,因此你的查询失败并返回FALSE,你的WHILE循环不能执行。使用%可以匹配任何包含字符串的结果(例如SomeText-$username-SomeText)。

这只是对你的问题的回答,你应该实现其他帖子中提到的东西:错误处理,使用转义字符串(用户可以在字段中输入任何内容,并且你必须确保它不是任意代码),使用PDO代替mysql_connect,现在已经被废弃了。

试试这个,它必须工作,否则您需要打印错误来指定您的问题

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * from Users WHERE UserName LIKE '$username'";
$result = mysql_query($sql,$con);

while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}

试试下面的代码。它可能会工作得很好。

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName ='$username'");

while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}
$query = "SELECT Name,Mobile,Website,Rating FROM grand_table order by 4";

while( $data = mysql_fetch_array($query))
{
    echo("<tr><td>$data[0]</td><td>$data[1]</td><td>$data[2]</td><td>$data[3]</td></tr>");      
}

您可以使用ORDER BY查询,而不是使用WHERE查询。对于查询的使用,它比这个要好得多。

我已经完成了这个查询,没有得到参数或布尔值之类的错误。

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

使用单引号定义字符串,PHP不解析单引号分隔的字符串。为了获得变量插值,您需要使用双引号或字符串连接(或两者的组合)。更多信息请参见http://php.net/manual/en/language.types.string.php。

此外,你应该检查mysql_query是否返回了一个有效的结果资源,否则fetch_*, num_rows等将不会对结果起作用,因为这不是一个结果!即:

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

if( $result === FALSE ) {
   trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR);
} else {
   while( $row = mysql_fetch_array($result) ) {
      echo $row['username'];
   }
}

http://us.php.net/manual/en/function.mysql-query.php获取更多信息。