- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从MySQL表中选择数据,但收到以下错误消息之一:
mysql_fetch_array()期望参数1为资源,给定布尔值
要么
mysqli_fetch_array()期望参数1为mysqli_result,给定布尔值
要么
在布尔值/非对象上调用成员函数fetch_array()
这是我的代码:
$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 = mysqli_query($mysqli, 'SELECT ...');
// mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
while( $row=mysqli_fetch_array($result) ) {
...
$result = $mysqli->query($mysqli, 'SELECT ...');
// Call to a member function fetch_assoc() on a non-object
while( $row=$result->fetch_assoc($result) ) {
...
$result = $pdo->query('SELECT ...', PDO::FETCH_ASSOC);
// Invalid argument supplied for foreach()
foreach( $result as $row ) {
...
$stmt = $mysqli->prepare('SELECT ...');
// Call to a member function bind_param() on a non-object
$stmt->bind_param(...);
$stmt = $pdo->prepare('SELECT ...');
// Call to a member function bindParam() on a non-object
$stmt->bindParam(...);
最佳答案
查询可能由于各种原因而失败,在这种情况下,mysql_ *和mysqli扩展名都将从其各自的查询函数/方法中返回false
。您需要测试该错误情况并进行相应处理。
mysql_* extension:
注意mysql_ functions are deprecated和已在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'];
}
$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 ) {
...
$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。另外,数据库错误消息不应显示给非管理员用户,如
discloses too much information所示。
关于php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows等…期望参数1为资源或结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914315/
public function doesUserExist($u) { $this->dbConnect(); mysql_select_db($this->database);
是否有更有效的方法来执行以下操作? $total_a = mysql_query("SELECT `id` FROM `table` WHERE `this` = 'that'"); $total_b
大家好,我正在对数据库进行正常的选择,但是 mysql_num_rowsis 为空,我不知道为什么,我有 7 行选择。 如果您发现问题,请告诉我。 真的谢谢。 代码如下: function get_b
警告:mysql_num_rows():已提供 参数不是有效的MySQL结果 资源中 /home/ango/public_html/ficha/findUser.php 在201行 这
(性能方面)有什么区别 $var = mysql_query("select * from tbl where id='something'"); $count = mysql_num_rows($v
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我写了下面的查询来检查数据库记录中的记录是否符合下面的条件。我确定有符合此条件的行,但问题是任何一组组合都会返回“记录存在”行 $query = mysql_query("SELECT * FROM
我有这段代码可以获取 friend 发送给某人的用户名like user to from message。 mysql_num_rows 不工作,我的用户名显示为未知。这与 mysql_num_row
我有这段 PHP 代码: 但是,当我尝试运行这段代码时,出现了这些错误: Warning: mysql_num_rows() expects parameter 1 to be resource,
echo $sql2 = "select uid,username from userstable where username IN(".$usernameStr.")"; $res2 = mysq
我有一个简单的 PHP 页面,您可以在其中更新您的网站配置文件。有多种可更新的输入,例如电话号码、MSN 访问权限等。其中有一个特定的输入,即电子邮件地址字段。由于它不是注册页面而是更新页面,因此添加
这是我的 php 代码,用于打印数据库中的行数。实际上,数据库中有 3 行与我的查询匹配。但是我的代码中的“echo $num”没有打印任何内容请帮忙。这是我的代码 最佳答案 您应该使用mysqli
不知道问题出在哪里! $msgs = mysql_num_rows(mysql_query("SELECT * FROM messages WHERE recipient = $userID AND
我有以下功能: public function already_tweeted($tweet){ return mysql_num_rows(mysql_query("SELECT *
出于某种原因,我无法理解我在 mysql_num_rows 方面遇到的麻烦。 脚本如下: $notquery = 'SELECT * FROM notification WHERE uid = 1 A
上面是获取 ID 号的提交表单。我尝试获取用户输入的 ID(注意:这是一个数字)并显示与该 ID 对应的 mysql 表行。示例:用户输入 2,显示数据库中的行号 2。我的问题是所有行都显
我有一个 PHP 登录脚本。这是人们可以创建新用户的部分。我的问题是我想检查用户是否存在,如果用户名在表中不存在,则创建新用户。但是,如果用户确实存在,我希望它在 session 变量中返回错误。这是
elseif(isset($_POST['submit'])) { // Look for their user $lookuser = mysql_query("SELECT * F
我正在尝试检查 mysql 查询的值是否返回 false 或者实际上包含一个值。我的第一个正常工作的解决方案如下所示: $gotTrailer = mysql_query("SELECT tr
" . mysql_connect_error(); } $name=$_SESSION['name']; echo $name; $sql1 = mysql_query("select cust_i
我是一名优秀的程序员,十分优秀!