表示するコメントを 2 つに制限して PDO を使用して MySQL からコメントを取得していますが、クエリはコメントを取得せず、何も出力しないため、print_r も var_dump できません。クエリ自体に問題があるはずだと思いますが、数え切れないほどの時間機能していないと思ったので、経験豊富なプログラマーに尋ねることにしました。
ページに出力されるデータはありません。second_count 変数の問題なのか、post_iD 変数の問題なのかわかりません。
1. while ループを正しく使用していますか?
2. while ループと foreach のどちらを使用した方がよいですか?
3. var_dump および print_r 関数は、クエリまたは PHP.INI のエラーが原因で動作しませんか?
PDOでデータを取得する方法は次のとおりです。
PUBLIC FUNCTION Comments( $post_iD,$second_count ){
if($second_count){
$sth = $this->db->prepare("
SELECT C.com_id, C.uid_fk, C.comment, C.created, U.username, U.photo
FROM comments C, users U
WHERE U.status = '1'
AND C.uid_fk = U.uiD
AND C.msg_id_fk = :postiD
ORDER BY C.com_id ASC LIMIT :second, 2");
$sth->execute(array(':postiD' => $post_iD, ':second' => $second_count));
while( $row = $sth->fetchAll())
$data[] = $row;
if(!empty($data)){
return $data;
}
}
}
そして、これが私のページに情報を表示しようとしている方法です。
<?php
$commentsarray = $Wall->Comments( $post_iD, 0 );
$x=1;
if($x){
$comment_count = count($commentsarray);
$second_count = $comment_count-2;
if($comment_count>2){
?>
<div class="comment_ui" id="view<?php echo $post_iD; ?>">
<a href="#" class="view_comments" id="<?php echo $post_iD; ?>">View all<?php echo $comment_count; ?> comments</a>
</div>
<?php
$commentsarray = $Wall->Comments( $post_iD, $second_count );
}
}
if( $commentsarray ){
foreach($commentsarray as $data){
$com_id = $data['com_id'];
$comment = tolink(htmlcode($data['comment'] ));
$time = $data['created'];
$mtime = date("g:i", $time);
$username = $data['username'];
$com_uid = $data['uid_fk'];
$photo = $data['photo'];
?>
<div class="stcommentbody" id="stcommentbody<?php echo $com_id; ?>">
<div class="stcommentimg">
<img src="<?php echo $photo;?>" class="small_face">
</div>
<div class="stcommenttext">
<?php if($uiD == $com_uid || $uiD == $post_iD ){ ?>
<a class="stcommentdelete" href="#" id="<?php echo $com_id;?>" title="Delete Comment"></a>
<?php } ?>
<div class="stmessage"><?php echo clear($comment); ?></div>
</div>
<div class="stime"><a href='' title='<?php echo $time;?>' class="timeposted"><?php echo $mtime;?> — Like</a></div>
</div>
<?php
}
}
?>