2014-11-18 1 views
0

나는이 질문에 대한 답을 찾기 위해 높거나 낮게 검색했다. 나는 동료 코더들에게 너에게 다가 간다. :-)MySQL에서 반환 값을 확인하는 방법 -> prepare()

I 다음, 단순 해 보이는 PHP 코드가 있습니다

$query = "SELECT marketid, type, quantity, price, datetime, bundleid, state, stoplossprice FROM orders WHERE type = ? AND state = ?"; 
$stmt = $login->mySQLi->prepare($query); 
if(!$stmt) { 
    throw new Exception(mysqli_error($login->mySQLi)); 
} 
$stmt->bind_param("ss", $strOrderType, $strOrderState); 
if($stmt) 
{ 
    if(!$stmt->execute()) 
    { 
     // Return an error 
    } 
} 
$stmt->store_result(); 
$stmt->bind_result($marketid, $ordertype, $quantity, $buyprice, $buydatetime, $bundleid, $orderstate, $stoplossprice); 
while ($stmt->fetch()) { 
    // Do something with the returned data 
} 
$stmt->close(); 
나는 또한 거의 동일한 코드를 여러 가지 다른 장소를

및 작동 다른 장소에서합니다. 그러나 어떤 이유 때문에 execute() 문을 실행할 때 종료됩니다.

또한 문을 실행 한 후 $stmt->affected_rows은 -1과 같습니다.

값이 -1이면 "-1"은 쿼리가 오류를 반환했음을 의미합니다. 그러나, 나는 $stmt에서 오류 메시지를 출력하는 방법을 알아낼 수 없습니다. $stmt->errno$stmt->error에는 값이 없습니다.

은 또한 MySQL을위한 로그 파일을 확인했으며 다음과 같은 보여줍니다

141117 21시 21분 39초 (222) SELECT marketid, 종류, 수량, 가격, 날짜, bundleid, 주, stoplossprice 준비 FROM 주문 유형 =? AND 상태 =? 222 통계 223 통계
141,117 21시 21분 54초 222 통계
223 통계
141,117 21시 21분 55초 222 통계
223 통계
141,117 21시 21분 56초 222 통계
223 통계
141117 21:21:57 222 SELECT 실행 marketid, 유형, 수량, 가격, 날짜 시간, 번들, 상태, stoplossprice 주문 유형 = '구매'AND 상태 = '대기 중' 223 종료
222 닫기 stmt

을 종료 오비완 케노비 도와주세요, 당신이 내 유일한 희망이야 (그리고 야아, 그것은 늦게, 나는 비트 썩을을 느낄 수있어)!

+0

실행 후 오류가 있는지 확인해야합니다. – sectus

+0

'prepare'는 데이터베이스의 모든 행에 영향을 미치지 않으므로 -1 결과가 필요합니다. 'execute' 다음에 오류가 있는지 확인해야합니다. 오류가있는 경우 여기에 붙여 넣어 도움을 받으십시오. –

+0

'$ stmt-> execute()'를 호출하면 프로그램이 예기치 않게 종료됩니다. 그래서, 나는'$ stmt-> execute()'에서 리턴 값을 볼 수 없다. 아마 원래의 질문에 이것을 포함시켜야했습니다. – MikeyE

답변

0

필자는 마침내 대답을 찾을 수있었습니다.

게시 한 코드를 실행하기 전에 다른 MySQL 문을 실행하고있었습니다. 그 성명서에서 저는 mysqli_report(MYSQLI_REPORT_ALL);을 실행했습니다.

PHP 문서에서 알게된 것처럼 mysqli_report(MYSQLI_REPORT_ALL);을 호출 할 때주의해야합니다. 여기 mysqli_report()의 문서에서 발췌 한 내용입니다 :

"이 기능을 사용하면 매우주의하십시오 - 프로세스 별 설정입니다 서버가 여러 요청에 대해 단일 PHP 프로세스를 다시 사용하도록 설정되어있는 경우 모든 스크립트에서이 함수의 마지막 설정이 mysqli를 사용하는 다른 모든 스크립트에 영향을 미친다는 것을 의미합니다. 항상 스크립트의 끝에서 안전을 기하기 위해 PHP의 CGI 버전은 아마 이것으로부터 안전 할 것입니다. "

첫 번째 MySQL 문 끝 부분에 mysqli_report(MYSQLI_REPORT_OFF);을 추가했으며 이제는 매력적으로 작동합니다. 고맙습니다 PHP 워드 프로세서 !! 그리고 sectus와 Antoan Milkov 덕분에 여러분의 노력도 !!

관련 문제