警告:mysqli_fetch_array()期望参数1为mysqli_result,第6行给出的对象

时间:2015-12-18 11:54:52

标签: php mysqli

scope

嗨,这是我的代码&我收到此错误消息:

  

警告:mysqli_fetch_array()期望参数1为mysqli_result,   第6行给出的对象

这是第6行&正如您所看到的,我已经包含了 $ con 这是我的数据库连接。

  

while($ row_messages = mysqli_fetch_array($ con,$ run_messages)){

所以我真的不知道这里发生了什么......如果你知道如何解决这个问题请告诉我,请提前知道!

2 个答案:

答案 0 :(得分:1)

<?php 
if (isset($_GET['hash'])&&!empty($_GET['hash'])){
        $hash = mysqli_escape_string($con, $_GET['hash']);
        $message_query = "SELECT from_id, message FROM message WHERE hash='$hash'";
        $run_messages = mysqli_query($con,$message_query);
        while($row_messages = mysqli_fetch_array($run_messages, MYSQLI_ASSOC)){
             $from_id = $row_messages['from_id'];
             $message = $row_messages['message'];

             $user_query = "SELECT username FROM admins WHERE id='$from_id'";
             $query_run = mysqli_query($con, $user_query);
             $run_user = mysqli_fetch_array($query_run, MYSQLI_ASSOC);
             $from_username = $run_user['username'];

             echo "<p><strong>$from_username</strong></p></br>";
        }
}else{
    header('Location: messages.php');
}
?>

基本上,mysqli_fetch_array有一个必需参数,即查询结果和结果类型的可选查询。 $run_messages是第一个查询的结果,将用于执行mysql_fetch_array,而MYSQLI_ASSOC是您将使用的可选类型,因此您可以访问$ row_messages中的值你这样做。

阅读mysqli_fetch_array了解详情。

此外,请记住在允许将数据查询到数据库之前,使用mysqli_escape_string来转义用户。这减少了SQLi的机会。

答案 1 :(得分:0)

<强> mysqli_fetch_array

  

mysqli_fetch_array(mysqli_result $ result [,int $ resulttype =   MYSQLI_BOTH])

第一个参数是Specifies a result set identifier returned by mysqli_query(),第二个参数是result type

删除连接作为第一个参数

这将是

$row_messages = mysqli_query($run_messages,MYSQLI_ASSOC);

您的代码是开放的sql注入更好地使用绑定语句

http://php.net/manual/en/mysqli-stmt.bind-param.php

要检查连接中的错误并使用

查询
/* check connection */

if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

if (!$mysqli->query("SET a=1")) {
    printf("Errormessage: %s\n", $mysqli->error);
}

http://php.net/manual/en/mysqli.error.php

在第二个查询中,您使用

$user_query = "SELECT username FROM admins WHERE id='$from_id'";

  

TYPO在这里

$form_id !=$from_id

将此更改为

$user_query = "SELECT username FROM admins WHERE id=' $form_id'";