php mssql db 한개 값 가져오기

php mssql db 한개 값 가져오기

QA

php mssql db 한개 값 가져오기

답변 4

본문

안녕하세요. 제가 현재 MSSQL과 연결해서 한개의 값만 가져와 변수에 저장하는 코드를 작성중입니다.

우선, DB 연결하는 부분에도 성공을 했고, 이전 페이지에서 ajax로 넘겨주는 부분도 성공했기에 SELECT 쿼리에는 문제가 없는것을 확인했습니다.

 

코드는 다음과 같습니다.

 


<?php
if(!empty($_POST)){
    $msg = '';
    $output = '';
 
    $DB_IP = "";
    $DB_ID = "";
    $DB_PWD = "";
    $DB_NAME = "";
    $DB_ConnectInfo = array("UID"=>$DB_ID, "PWD"=>$DB_PWD, "Database"=>$DB_NAME, "CharacterSet" => "UTF-8");
 
    date_default_timezone_set('Asia/Seoul');
    $connect = sqlsrv_connect($DB_IP, $DB_ConnectInfo);
 
    // ajax로 넘긴 값
    $id = $_POST["product_id"];
    $productName = $_POST["productName"];
 
    $before_query = "SELECT * FROM tblProduct WHERE ProductName = '$productName'";
 
    $result = sqlsrv_query($conn, $before_query);
    $before_count = '';
 
    // ProductCount값 구해서 before_count 변수에 넣어주기
    while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
        $before_count = $row["ProductCount"];
    }
 
    if (sqlsrv_query($connect, $before_query)) {
        $output .= '<label class="text-success">'.$before_query.'</label>';    // 출력 잘됨
        $output .= '<label class="text-success">'.$before_count.'</label>';    // 출력 안됨
 
        // $before_count를 이용한 쿼리 작성 예정
   }
    echo $output;
}

 

위와 같이 코드를 작성했고, 주석에도 적어놨듯이 productCount 값을 받아오는게 목표입니다.

output을 출력해보면 쿼리문은 잘 출력하는데 productCount값을 저장한 변수인 before_count는 아무런 출력도 못합니다.

이 부분에 대해서 아시는 분 계시다면 설명 부탁드리겠습니다.

감사합니다!

이 질문에 댓글 쓰기 :

답변 4


// $result = sqlsrv_query($conn, $before_query);
$result = sqlsrv_query($connect, $before_query);

 

if (sqlsrv_query($connect, $before_query)) {

-> 삭제

 

}

echo $output;

->

echo $output;

 

죄송하지만 어떤걸 작성하고자 하신지 알 수 있을까요?
제가 출력하고 싶은건 $before_count입니다만,, echo $output만 두번 작성하셔서 무슨 말씀이신지 모르겠습니다.
또한 if문은 이후에 사용할 코드라 지우면 안되는데 왜 삭제하라 하신건지 알 수 있을까요?

제 눈에는 아래 코드처럼 보이는데 이렇게 작성하신게 맞을까요?

if (sqlsrv_query($connect, $before_query)) {
-> 삭제
}
echo $output;
->
echo $output;

if (sqlsrv_query($connect, $before_query)) {
        $output .= '<label class="text-success">'.$before_query.'</label>';    // 출력 잘됨
        $output .= '<label class="text-success">'.$before_count.'</label>';    // 출력 안됨
 
        // $before_count를 이용한 쿼리 작성 예정
  }

->


        $output .= '<label class="text-success">'.$before_query.'</label>';    // 출력 잘됨
        $output .= '<label class="text-success">'.$before_count.'</label>';    // 출력 안됨

음 말씀하신대로 if문만 지워주고 실행해봐도 $before_query는 출력 하지만 $before_count는 출력 못하네요..
저는 while문이 문제라 생각했는데 이부분은 고민해보겠습니다.
도와주셔서 감사합니다.

mssql 드라이버함수를 그대로 쓰지 마시고, PDO 를 통해 접속객체를 만들어서 쓰세요.

그러면 mysql 이나 mssql이나 동일한 방식으로 메소드 호출이 가능합니다.

$row = $pdoconn->query("select top 1 * from table_name where condition.....")->fetch(PDO::FETCH_ASSOC);

 

 

 

    $before_query = "SELECT * FROM tblProduct WHERE ProductName = '$productName'";
 
    $result = sqlsrv_query($conn, $before_query);
    $before_count = '';

 

==

 

count라는 것이 

WHERE ProductName = '$productName' 

이 조건에 맞는 record 갯수를 원하시는 거라면

 

$before_query = "SELECT count(*) ProductCount FROM tblProduct WHERE ProductName = '$productName'";

$result = sqlsrv_query($conn, $before_query);

$row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC);

$before_count = $row["ProductCount"];

 

이렇게 하셔야 합니다.

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 10
© SIRSOFT
현재 페이지 제일 처음으로