채택완료

쿼리 질문드립니다.

2019-10-12 (토) 22:23:43 3,350

<?php
include_once("./_common.php");

$sql = "select co_subject, co_id, co_content, co_seo_title from {$g5['g5_content']} where id='admin' order by rand() desc limit 1";
$query = mysql_query($sql);
while($data = mysql_fetch_assoc($query)) {
$filename .= "$data[co_subject]".", ";
}

?>
<?=$filename ?>

이렇게  하니깐 에러나오네요.

내용관리 페이지의 제목을 랜덤으로 나오게 하고 싶은데,,,, 그누4용 쿼리문을 약간 수정해서 그누5에 사용하니 안되네요....

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트
2019-10-13 (일) 04:52:01

본문에서 그누4용 쿼리라고 말씀하셨는데, 그누4와 그누5의 DB 스키마는 일부 상이한 부분이 있고, 또 내용관리 테이블(DB)에서 존재하지 않는 필드도 있습니다. 

co_seo_title 라는 필드는 존재하지 않고, id 라는 필드도 없어서 where 조건문으로 id가 'admin' 인 데이터를 불러오려고 해도 그런 조건 자체가 성립되지 않기에 나타나지 않는 것이 당연한 것이고요.

☞ DB스키마: http://www.gnuwiz.com/bbs/board.php?bo_table=gnu_tip&wr_id=75&page=2

아래 소스대로 하면, 내용관리 페이지의 제목이 랜덤하게 출력될 것입니다.

그리고, 본문에서 'mysql_query' 를 사용하셨는데, 이미 그누보드의 common.php 파일을 include_once 한 상태에서 mysql_query를 호출하면 DB 접속이 안된 상태이므로, sql_query을 사용하셔야 되고, 또 limit 가 '1' 인 상황에서는 굳이 while 내지 for, foreach 를 사용할 필요 없이 sql_fetch를 쓰면 됩니다.

Copy
<?php
include_once("./_common.php");

$data = sql_fetch(" select co_subject, co_id, co_content from {$g5['content_table']} order by rand() desc limit 1  ");
$filename = $data['co_subject'];
?>
<?=$filename ?>

답변에 대한 댓글 1개

2019-10-13 (일) 11:53:51
자세한 설명 감사드립니다^^
Copy
<?php
include_once("./_common.php");

 

$sql = "select co_subject, co_id, co_content, co_seo_title from {$g5['g5_content']} where id='admin' order by rand() desc limit 1";
$query = sql_query($sql);    //이부분변경 
while($data = sql_fetch_array($query)) {    // 이부분변경
    $filename .= $data['co_subject'].", ";    // 여기도 일부변경
}

?>
<?php echo $filename;      // 여기도 조금 변경 ?>

이렇게 변경해보세요

답변에 대한 댓글 1개

2019-10-13 (일) 00:04:28
적용해보니 전혀 반응이 없네요....

답변을 작성하려면 로그인이 필요합니다.