我正在尝试从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_
*和mysqli扩展名都false
将从它们各自的查询函数/方法中返回。您需要测试该错误情况并进行相应处理。
mysql_ *扩展名 :
注: 该mysql_功能已被弃用,并在PHP版本7已被删除。
请先检查一下,$result
然后再传递给mysql_fetch_array
。您会发现这是false
因为查询失败。请参阅mysql_query
文档以获取可能的返回值以及有关如何处理它们的建议。
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '$username'");
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
mysqli扩展
程序样式 :
$username = mysqli_real_escape_string($mysqli, $_POST['username']);
$result = mysqli_query($mysqli, "SELECT * FROM Users WHERE UserName LIKE '$username'");
// mysqli_query returns false if something went wrong with the query
if($result === FALSE) {
yourErrorHandler(mysqli_error($mysqli));
}
else {
// as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
foreach( $result as $row ) {
...
oo风格 :
$username = $mysqli->escape_string($_POST['username']);
$result = $mysqli->query("SELECT * FROM Users WHERE UserName LIKE '$username'");
if($result === FALSE) {
yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else {
// as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
foreach( $result as $row ) {
...
使用准备好的语句:
$stmt = $mysqli->prepare('SELECT * FROM Users WHERE UserName LIKE ?');
if ( !$stmt ) {
yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else if ( !$stmt->bind_param('s', $_POST['username']) ) {
yourErrorHandler($stmt->error); // or $stmt->error_list
}
else if ( !$stmt->execute() ) {
yourErrorHandler($stmt->error); // or $stmt->error_list
}
else {
$result = $stmt->get_result();
// as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
foreach( $result as $row ) {
...
这些示例仅说明 了 应该执行的操作(错误处理),而没有说明如何执行。or die
输出HTML时不应使用生产代码,否则它将(至少)生成无效的HTML。另外,数据库错误消息不应显示给非管理员用户,因为它会显示过多信息。
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: PHP:警告:sort()期望参数1为数组,给定资源 我的PHP函数脚本昨晚工作正常,现在当我今天登录进行更多工作时, “警告:mysql_result()期望参数1为资源,给定布尔值”。 我不知道为什么这不起作用。我已经在线阅读了PHP手册,甚至还看到了使用和使用我所做的示例。谁能帮我这个忙吗?我一直在修正错误(一个错误,一个
问题内容: 每当我运行此命令时,我都会收到此错误: 编码: 问题答案: 那是因为mysql_query有时返回布尔值false(查询错误)。您需要检查一下: 上面的代码写得不好,不推荐使用。在实际项目中使用带有异常的PDO。
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: PHP:警告:sort()期望参数1为数组,给定资源 请帮忙, 我得到以下错误: 警告:mysql_fetch_array()期望参数1为资源,布尔值在......中给出。 这是我的查询: 问题答案: 您的查询($ myQuery)失败,因此不产生查询资源,而是产生FALSE。 要揭示动态生成的查询的样子并揭示错误,请尝试以下操
我的代码中出现了这个错误,我不知道如何解决它我的代码: 这是一个错误: 警告:mysqli_query()要求参数1为mysqli,资源在C:\xampp\htdocs\limitless\connect_to_mysql中给出。第17行的php 我做错了什么?
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: mysql_fetch_array()期望参数1为资源,在select中给出布尔值 警告:mysql_affected_rows()期望参数1为资源,在第20行的C:\ wamp \ www \ a \ l \ forget.php中给出布尔值 问题答案: 至 并再次运行 然后 至 哦,是的,而且还有引号
问题内容: 我不断收到使用的错误消息,您能帮我弄清楚我的代码出了什么问题吗? 这是我的代码: 我已经按照您的建议尝试了..它回显1146 当我搜索该错误时说 但是我不知道这意味着什么…请帮助。 问题答案: 可能失败了。在这种情况下,它返回。使用mysql_error()找出会发生什么。