이전 목록 다음
채택완료

sql 문인데 뭔가 잘 못 된거 같아요.

2018-03-14 (수) 17:32:00 4,233


              $query = "SELECT * FROM g5_write_$boardtable WHERE wr_id=$topic  ";
              $result = mysql_query($query);
              if (!$result) {
                die('Invalid query: ' . mysql_error());
              } 
                 $wr_num = '';

              while ($row = @mysql_fetch_assoc($result)){
                $wr_num = $row['wr_num'];
                // Add to XML document node
              }

              // Select all the rows in the markers table
              // A && 1 day

              echo $wr_num;   

위와 같이 했는데 echo $wr_num; 이 것이 출력되지 않습니다. 

그리고 또한 

              while ($row = @mysql_fetch_assoc($result)){
                $wr_num = $row['wr_num'];
                // Add to XML document node
              }

위 sql 말고 더 간단하게 할 수 있는 sql 문을 알려주세요.

위에 것 때문에 안되는거 같아요.

|

답변 4개 / 댓글 1개

채택된 답변
+20 포인트

https://dev.mysql.com/doc/apis-php/en/apis-php-function.mysql-fetch-assoc.html

여기를 보시면

mysql_fetch_assoc에 대해서 사용방법과  특징이 나와있습니다.

-------------------

정작 하려고하는일로만 보면

Copy
<?php

 

    $query = "SELECT * FROM g5_write_{$boardtable} 

                     WHERE wr_id='{$topic}' 

                       and wr_num is not null 

                       and wr_num != '' 

                      ";
    $result = sql_query($query);

    $wr_num = "";

    while ($row = sql_fetch_array($result)) {

        $wr_num = $row['wr_num'];

    }

    echo $wr_num;

?>

로 출력이 가능하지만

어떻게 수행을하던간에 모든 Row의 맨 마지막의 자료의 wr_num 만 출력됩니다.

엄청 비효율적이죠

그럴때에는 order by 와 존재하는 값을 잘 찾는게 더 중요합니다.

1.

SQL문을 DB에서 실행하면 결과가 있나요?

(SELECT * FROM g5_write_$boardtable WHERE wr_id=$topic)

위의 코드로는 wr_id가 없는 값이면 당연히 $wr_num은 초기화한 ''값을 출력하는게 맞습니다.

2.

wr_id가 pk가 맞다면 찾은 데이터는 1개의 row일 것입니다.

while을 사용할 이유가???

답변에 대한 댓글 1개

while 말고 다른걸 사용할 줄 몰라서 그래요.
sql 구문을 사용할 줄 몰라서요.
알려주시면 감사하겠습니다.

sql_query 를 사용해 보시고요

해당 쿼리 부분을 $query 부분이 제대로 찍혀서 생성이 되고 있는지 체크해 보시길 바랍니다.

mysql_query -> sql_query

mysql_fetch_assoc -> sql_fetch_array 이렇게 변경해보세요.

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