저는 PHP를 처음 접했고 1 년 전만해도 MySQL을 만난 클래스가 있습니다.PHP 변수와 비교되는 MySQL DB 쿼리
db 테이블에 값을 쿼리하기 위해 기존 코드에 체크를 추가하려고하는데, 그 값이 = 1이면 코드의 변수를 변경하십시오. 충분히 간단하지만 작동하지 않습니다. 쿼리가 Sequel Pro에서 예상대로 작동하더라도 쿼리 결과가 0입니다.
기존 쿼리 이후에 필자가 작성하고 실행하는 함수를 완전히 이해하지 못한다고하더라도 필자는 필자의 구문을 모델링하고있다. 왜냐하면 필자 자신이 더 쉽게 만들기 위해 새 db 연결을 만들고 싶지 않기 때문이다. 나는 그 문제의 발췌 문장을 줄 것이다.
내 질문 : 왜 데이터베이스에서 직접 정상적으로 작동하면 결과를 반환하지 않습니까? 쿼리는 Integer 형식의 결과 2 개를 반환해야하는데, 다른 정수 $ friend_uid와 비교하고 싶습니다. 여기
$dbObj = new sdb("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USERNAME, DB_PASSWORD);
$dbObj->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$newStatus = 'REQUEST_PENDING';
$botquery = "SELECT `KAP_USER_MAIN.UID` FROM `KAP_USER_MAIN` WHERE `KAP_USER_MAIN.IS_BOT` = 1";
$botstatement = $dbObj->prepare($botquery, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$botstatement->execute();
$posts[]= "sql error " . mysql_error();
if(!$botstatement){
$posts[] = "failed bot query: " . mysql_error();
}
$num_rows = mysql_num_rows($botstatement);
if ($num_rows == false) {
$num_rows = 0;
}
$posts[] = "$num_rows rows";
while($row = mysql_fetch_array($botstatement)) {
if($row[0]['UID'] == $friend_uid){
$newStatus = 'FRIENDS';
}
}
$statement->execute(array(':uid'=>$uid,':friend_uid'=>$friend_uid,':status'=>$newStatus));
내가 모델링하고 잘 작동 기존 코드에서 쿼리의 예입니다 후 :
$query = "SELECT kits.TOTAL_UNIT,kum.ENERGY,kum.NAME,kum.LEVEL FROM KAP_USER_MAIN kum,KNP_INVENTORY_TRANSACTION_SUMMARY kits WHERE kits.UID = :uid AND kits.INV_ID = '10004' and kum.UID = :uid";
$statement = $dbObj->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$statement->execute(array(':uid'=>$uid));
$res = $statement->fetchAll(PDO::FETCH_ASSOC);
$sender_name = $res[0]['NAME'];
하나의 입력란 만 선택하면 어떻게 되나요? 'SELECT KAP_USER_MAIN.UID FROM [...]'. '$ statement-> execute ([...])' –
쿼리의 요구 사항과 일치하는 두 개의 결과가 있는데 모두 반환해야합니다. 문제는 반환되는 것이 아닙니다. 명령문은 실행 준비 라인에서 식별됩니다. 당신이 그것을 고치는 법을 안다면 나는 완전히 새로운 것입니다. – user1814946
** PDO 및 mysql 인터페이스 호출을 ** 혼합하지 마십시오. 즉, 함수 mysql_num_rows와 mysql_error에 대한 호출은 제거되어야하고, 상응하는 PDO 기능으로 대체되어야한다. – spencer7593