Я уже несколько часов стучаю по этому простому запросу PDO. Каков правильный способ получения этого типа информации из нескольких баз данных MySQL. В этом запросе должны использоваться Fetch или FetchAll? поскольку он запрашивает несколько баз данных.Запрос не отображает информацию: PDO, MYSQL, PHP
Ниже я попытался преобразовать устаревший MySQL в PDO.
MySQL.
public function Comments($post_iD) {
$query = mysql_query("
SELECT C.com_id, C.uid_fk, C.comment, C.created, U.username
FROM comments C, users U
WHERE U.status = '1'
AND C.uid_fk = U.uiD
AND C.msg_id_fk = '$msg_id'
ORDER by C.com_id"); or die(mysql_error());
while($row = mysql_fetch_array($query))
$data[] = $row;
if(!empty($data)){
return $data;
}
}
PDO:
PUBLIC FUNCTION Comments($post_iD){
$sth = $this->db->prepare("
SELECT C.com_id, C.uid_fk, C.comment, C.created, U.username
FROM comments C, users U
WHERE U.status = '1'
AND C.uid_fk = U.uiD
AND C.msg_id_fk = ?
ORDER by C.com_id");
$sth->execute(array($post_iD));
$data = $this->fetch();
return $data;
}
}
Это, как я уверен, отображение базы данных.
<?php
$commentsarray = $Wall->Comments($post_iD);
if($commentsarray){
foreach($commentsarray as $data){
$com_id = $data['com_id'];
$comment = tolink(htmlcode($data['comment']));
$time = $data['created'];
$mtime = date("c", $time);
$username = $data['username'];
$com_uid = $data['uid_fk'];
$cface = $Wall->Profile_Pic($com_uid);
?>
<div class="stcommentbody" id="stcommentbody<?php echo $com_id; ?>">
<div class="stcommentimg">
<img src="<?php echo $cface;?>" class="small_face" alt=<?php echo $username;?>">
</div>
<div class="stcommenttext">
<?php echo clear($comment); ?>
</div>
</div>
<?php
}
}
?>
Спасибо за ваш ответ Шон. Это просто дает мне Неустранимая ошибка: вызов неопределенного метода Wall_Updates :: fetchAll() в $ data = $ this-> FetchAll(); Есть идеи? * Как я пробовал это раньше * – iBrazilian
Вам нужно сделать 'fetchAll()' в вашем запросе '$ sth', а не на вашем db-соединении' $ this-> '. Таким образом, это должно быть '$ data = $ sth-> fetchAll();' – Sean
Согласовано +1. В качестве альтернативы используйте цикл while (как ваш код mysql) с помощью 'fetch()'. – showdev