我试图从一个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'];
}

当前回答

$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获取更多信息。

其他回答

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

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

有时将查询抑制为@mysql_query(您的查询);

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

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

while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}
<?php
    $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_query("SELECT * FROM Users WHERE UserName ='".$username."'");

如果数据库未选中,请检查,因为有时数据库未选中

检查

mysql_select_db('database name ')or DIE('Database name is not available!');

MySQL查询前 然后进入下一步

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

f($result === FALSE) {
    die(mysql_error());

在$username周围加上引号。字符串值,与数字值不同,必须用引号括起来。

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

同样,如果不使用通配符,使用LIKE条件也没有意义:如果需要精确匹配,则使用=而不是LIKE。