私はこの単純な PDO クエリに何時間も頭を悩ませてきました。このタイプの情報を MySQL の複数のデータベースから取得する正しい方法は何ですか? このクエリでは、Fetch または FetchAll を使用する必要がありますか? 複数のデータベースにクエリを実行しているためです。
以下は、非推奨の 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
}
}
?>