php mssql db 한개 값 가져오기

php mssql db 한개 값 가져오기

QA

php mssql db 한개 값 가져오기

본문

안녕하세요. 제가 현재 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"];

 

이렇게 하셔야 합니다.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,587 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT