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

当前回答

<?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());

查询可能会由于各种原因而失败,在这种情况下,mysql_*和mysqli扩展都会从各自的查询函数/方法中返回false。您需要测试该错误条件并相应地处理它。

mysql_扩展:

mysql_函数已弃用,在php版本7中已被删除。

在将$result传递给mysql_fetch_array之前检查$result。您会发现它是假的,因为查询失败了。请参阅[mysql_query][1]文档了解可能的返回值以及如何处理它们的建议。

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

if($result === FALSE) { 
    trigger_error(mysql_error(), E_USER_ERROR);
}

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

正如scompt.com所解释的,查询可能会失败。使用此代码获取查询的错误或正确的结果:

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

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

if($result)
{
    while($row = mysql_fetch_array($result))
    {
        echo $row['FirstName'];
    }
} else {
    echo 'Invalid query: ' . mysql_error() . "\n";
    echo 'Whole query: ' . $query; 
}

有关更多信息,请参阅mysql_query()的文档。

实际的错误是单引号,因此没有解析变量$username。但是你应该使用mysql_real_escape_string($username)来避免SQL注入。

因为$username是一个PHP变量,我们需要将它作为字符串传递给mysqli,所以在查询中,你以单引号开始,我们将使用双引号,单引号和句号来连接("'.$username.'"),如果你以双引号开始,你将反转引号('".$username."')。

$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'];
     }

$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的使用已经贬值了很多,改用PDO。它很简单,但非常安全

在MySQL查询之前包含一个连接字符串变量。例如,下面代码中的$ connect:

$results = mysql_query($connt, "SELECT * FROM users");