안녕하세요. 제가 현재 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개 / 댓글 6개
// $result = sqlsrv_query($conn, $before_query);
$result = sqlsrv_query($connect, $before_query);
답변에 대한 댓글 1개
$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"];
이렇게 하셔야 합니다.
답변에 대한 댓글 1개
도와주셔서 감사합니다!
mssql 드라이버함수를 그대로 쓰지 마시고, PDO 를 통해 접속객체를 만들어서 쓰세요.
그러면 mysql 이나 mssql이나 동일한 방식으로 메소드 호출이 가능합니다.
$row = $pdoconn->query("select top 1 * from table_name where condition.....")->fetch(PDO::FETCH_ASSOC);
답변에 대한 댓글 1개
if (sqlsrv_query($connect, $before_query)) {
-> 삭제
}
echo $output;
->
echo $output;
답변에 대한 댓글 3개
제가 출력하고 싶은건 $before_count입니다만,, echo $output만 두번 작성하셔서 무슨 말씀이신지 모르겠습니다.
또한 if문은 이후에 사용할 코드라 지우면 안되는데 왜 삭제하라 하신건지 알 수 있을까요?
제 눈에는 아래 코드처럼 보이는데 이렇게 작성하신게 맞을까요?
if (sqlsrv_query($connect, $before_query)) {
-> 삭제
}
echo $output;
->
echo $output;
$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>'; // 출력 안됨
저는 while문이 문제라 생각했는데 이부분은 고민해보겠습니다.
도와주셔서 감사합니다.
답변을 작성하려면 로그인이 필요합니다.