PHP - Объект класса mysqli_stmt не может быть преобразован в строку [duplicate]

0

Это мой сценарий для получения комментариев и ответов. Он не вложен, так как я не забочусь об этом, и я просто хочу, чтобы вы могли отображать комментарии подобным образом для youtubes.

    <?php
 header("Access-Control-Allow-Origin: *");
ob_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Importing DBConfig.php file.
include 'DBConfig.php';

// Creating connection.
 $con = mysqli_connect($HostName,$HostUser2,$HostPass2,$DatabaseName2);

 // Creating SQL query
$query = "SELECT * FROM comments WHERE comments.id = 22 ";

$queryReplies = $con -> prepare('SELECT * FROM replies WHERE replies.id = ? ');


if ($con->connect_error) {
    header("HTTP/1.1 500 Internal Server Error");
}
else {
    if ($result = $con->query($query)) {
        header('Content-type: application/json; charset=utf-8');
        if( $result->num_rows > 0) {

        $post_arr = array();

         while($row = $result->fetch_array(MYSQLI_ASSOC)) // First loop for comment
         {
           $commentID = $row['uniqueID'];
           extract($row);

           $post_item = array(
               'uniqueID' => $uniqueID,
            'comment' => $comment,
                    'date' => $date,
                    'user' => $user
        );

        $queryReplies->bind_param("s",$commentID);
        $resultReplies = $con->$queryReplies->execute();

           while($rowReplies = $resultReplies->fetch_array(MYSQLI_ASSOC)) // Second loop for replies to comment
           {
                extract($rowReplies);

                $reply_array = array(
                    'comment' => $comment,
                    'date' => $date,
                    'user' => $user
                );
                array_push($post_item,$reply_array);

           }

           array_push($post_arr,$post_item);

         }
         echo json_encode($post_arr);

        }
    }
}

 mysqli_close($con);

 ob_end_flush();
?>

Поэтому, в основном, я хочу, чтобы он возвращал куски. В моей БД есть таблица комментариев и ответов.

Это дает мне следующую ошибку, я не знаю, как ее решить. Что означает ошибка и как я могу ее решить, если что-нибудь? Я застрял.

<br />
<b>Recoverable fatal error</b>:  Object of class mysqli_stmt could not be converted to string in <b>C:\Apache24\htdocs\getComments.php</b> on line <b>45</b><br />

После предложения минотавров и удаления → con из $ querylines, теперь он говорит

    <br />
 <b>Fatal error</b>:  Uncaught Error: Call to a member function fetch_array() on boolean in C:\Apache24\htdocs\getComments.php:47
Stack trace:
#0 {main}
  thrown in <b>C:\Apache24\htdocs\getComments.php</b> on line <b>47</b><br />
  • 0
    Вам, вероятно, не нужны $ in ->$queryReplies
  • 0
    @Nigel Найджел Рен, если я уберу $, он даже не загрузит скрипт.
Показать ещё 1 комментарий
Теги:
database

1 ответ

2
Лучший ответ

$resultReplies = $con->$queryReplies->execute();

Поскольку вы включили $ в свою часть $con->$queryReplies, PHP думает, что вы хотите получить доступ к объекту объекта $con, в то время как на самом деле вы хотите просто использовать $queryReplies. $con-> часть $con->.

Обычно вы смотрите на строку, где PHP говорит, что происходит ошибка, и вы смотрите, если что-то не так с этой линией. В этом случае вы могли бы знать, что $queryReplies содержит объект mysql_stmt. По крайней мере, это то, что указывает мне на источник ошибки :).

  • 0
    Кроме того, в начале вашего скрипта вы делаете $query = "SELECT * FROM comments WHERE comments.id = 22 "; а затем приступите к выполнению этого запроса, чтобы увидеть, нужно ли выполнять больше кода. Вы действительно хотите выполнить остальную часть своего кода, только если существует комментарий с идентификатором 22?
  • 0
    Это решило проблему, однако теперь у меня есть еще одна ошибка: <br /> <b> Неустранимая ошибка </ b>: необученная ошибка: вызов функции-члена fetch_array () для логического значения в C: \ Apache24 \ htdocs \ getComments.php : 47 Трассировка стека: # 0 {main} выбрасывается в <b> C: \ Apache24 \ htdocs \ getComments.php </ b> в строке <b> 47 </ b> <br /> Идентификационная часть предназначена только для конкретная страница, на которой я нахожусь, поэтому появятся комментарии, относящиеся только к этой странице.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню