Как конвертировать PDO в mysqli
Этот фрагмент работает только тогда, когда я устанавливаю соединение с PDO, но я хочу его с mysqli.
<?php //fetch_comment.php //$connect = new PDO('mysql:host=localhost;dbname=tbl_comment', 'root', ''); $connect = mysqli_connect('localhost','root','','tbl_comment'); $query = " SELECT * FROM tbl_comment WHERE parent_comment_id = '0' ORDER BY comment_id DESC "; $statement = $connect->prepare($query); $statement->execute(); $result = $statement->fetchAll(); $output = ''; // foreach($result as $row) { $output .= ' <div class="panel panel-default"> <div class="panel-heading">By '.$row["comment_sender_name"].' on '.$row["date"].'</div> <div class="panel-body">'.$row["comment"].'</div> <div class="panel-footer" align="right"><button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'">Reply</button></div> </div> '; $output .= get_reply_comment($connect, $row["comment_id"]); echo $output; } function get_reply_comment($connect, $parent_id = 0, $marginleft = 0) { $query = " SELECT * FROM tbl_comment WHERE parent_comment_id = '".$parent_id."' "; $output = ''; $statement = $connect->prepare($query); $statement->execute(); $result = $statement->fetchAll(); $count = $statement->rowCount(); if($parent_id == 0) { $marginleft = 0; } else { $marginleft = $marginleft + 48; } if($count > 0) { foreach($result as $row) { $output .= ' <div class="panel panel-default" style="margin-left:'.$marginleft.'px"> <div class="panel-heading">By '.$row["comment_sender_name"].' on '.$row["date"].'</div> <div class="panel-body">'.$row["comment"].'</div> <div class="panel-footer" align="right"><button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'">Reply</button></div> </div> '; $output .= get_reply_comment($connect, $row["comment_id"], $marginleft); } } return $output; } ?>
Что я уже пробовал:
Я попробовал mysqli_fetch_all (), но получаю сообщения об ошибках :
Обратите внимание: неопределенный индекс: comment_sender_name in C:\xampp\htdocs\tbl_comment\fetch_comment.php на линии 46
Примечание: неопределенный индекс: дата в C:\xampp\htdocs\tbl_comment\fetch_comment.php на линии 46
Примечание: неопределенный индекс: комментарий в C:\xampp\htdocs\tbl_comment\fetch_comment.php на линии 47
Обратите внимание: неопределенный индекс: comment_id in C:\xampp\htdocs\tbl_comment\fetch_comment.php на линии 48
Обратите внимание: неопределенный индекс: comment_id in C:\xampp\htdocs\tbl_comment\fetch_comment.php на линии 51
$statement = $connect ->prepare("SELECT * FROM tbl_comment WHERE parent_comment_id = '0' ORDER BY comment_id DESC"); $statement->execute(); $resultSet = $statement->get_result(); $result = $resultSet->fetch_all(); $output = ''; ..... $statement = $connect ->prepare(" SELECT * FROM tbl_comment WHERE parent_comment_id = '".$parent_id."' "); $statement->execute(); $resultSet = $statement->get_result(); $result = $resultSet->fetch_all(); $count = $statement->num_rows(); $output = '';
Обновление: Я также удалил $reslut. $result = $resultSet->fetch_all(MYSQLI_ASSOC);
И теперь первый запрос работает но второй(Выберите * из tbl_comment, где parent_comment_id = '".$parent_id.") Не
Patrice T
Подумайте о поиске документации.
OriginalGriff
Оооо! RTFM горит! :смеяться:
Richard Deeming
$query = " SELECT * FROM tbl_comment WHERE parent_comment_id = '".$parent_id."' ";
Не делай этого.
В то время как в данном конкретном случае вы, вероятно, в безопасности, так как использование конкатенации строк / интерполяции для построения запросов приведет к SQL-инъекция[^].
PHP: SQL-инъекция - руководство пользователя[^]