shihappns Ответов: 1

Как конвертировать 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-инъекция - руководство пользователя[^]

1 Ответов

Рейтинг:
1

rinave

$result = mysqli_fetch_assoc($query);
или

$query = $mysqli->query("SELECT * FROM tbl_comment
Где parent_comment_id = '0'
Заказ по comment_id DESC");
$result = $query->fetch_all(MYSQLI_ASSOC);