我试图从一个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'];
}
当数据库连接失败时,通常会出现错误,因此请确保连接数据库或包含数据库文件。
include_once(db_connetc.php');
OR
// Create a connection
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
//Select database
mysql_select_db("db_name", $connection) or die(mysql_error());
$employee_query = "SELECT * FROM employee WHERE `id` ='".$_POST['id']."'";
$employee_data = mysql_query($employee_query);
if (mysql_num_rows($employee_data) > 0) {
while ($row = mysql_fetch_array($employee_data)){
echo $row['emp_name'];
} // end of while loop
} // end of if
最佳实践是在sqlyog中运行查询,然后将其复制到页面代码中。
始终将查询存储在一个变量中,然后回显该变量。然后传递给mysql_query($query_variable);。
$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获取更多信息。
$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查询。对于查询的使用,它比这个要好得多。
我已经完成了这个查询,没有得到参数或布尔值之类的错误。
查询可能会由于各种原因而失败,在这种情况下,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'];
}