2009-05-30 2 views
0

나는 이것을 재현 할 간단한 방법이 없기 때문에 끔찍한 질문이다. 그러나 Zend Framework를 사용하여 OS X에서 MySQL 데이터베이스에 연결합니다. mysqli 객체에서 prepare 함수를 호출하면 null이 반환되는 경우가 있습니다. prepare 함수에 대한 명시된 리턴 값은 false 또는 명령문 오브젝트입니다.mysqli-> prepare 함수가 null을 돌려 준다

준비 문이 실패하는 이유에 대한 정보를 어디에서 찾아야하는지 알 수 없습니다. 준비 과정에 가시성을 부여하여 실패한 이유를 확인할 수있는 방법이 있습니까? 거래가 진행되는 동안 내 모든 문제가 다가오고 있습니다.

구체적인 사항이 없기 때문에 미안하지만, 왜 이런 일이 발생했는지 진정시킬 수는 없습니다.

+0

는) 당신이 그것의 절대적 positiv있어 실패 할 수 있습니다 null 값, var_dump ($ stmt)? b) $ mysql-> error에이 경우 유용한 오류가 포함되어 있습니까? – VolkerK

답변

0

예 제조 문
$ 초래할 = $ DB-> 쿼리 ('서버에 (키 값) VALUES (삽입 : 키 : 값)' 어레이 ('키'=> $ foo를 '값 '=> $ 바)

당신은? 저희가 귀하의 DB 쿼리를 알고

시도하자 및 테스트 데이터로 DB 쿼리를 실행하고 쿼리를 시작하는 잘 작동하는지 확인 할 수 있습니다. 쿼리가 우리 정상이라면 코드가 실패한 이유를 찾을 수 있습니다.

1

ToughPal을 수정하기 위해서는 다음을 사용해야합니다.

mysqli_query ($ db, "INSERT INTO 테이블 (variable1, variable2) VALUES (hello, mynameis));

실제 SQL보다 먼저 쿼리에 db 연결을 정의하고 명시해야합니다.

테이블 이름, 열 이름 및 값 데이터를 역 따옴표 이스케이프로 묶어야합니다.

0

나는 주말 내내이 문제를 발견 할 수 있었지만 실제로는 증상을 교정 할 수 있었지만 원인은 밝히지 않았습니다.

문제가 무작위로 발생했기 때문에 원래의 문제에는 SQL을 포함시키지 않았지만 같은 코드가 가끔 작동하고 때로는 작동하지 않기도했습니다. 문제는 메모리 포인터 문제였던 것 같습니다. 문제가 생길 때마다 Zend Debugger는 mysqli 객체를 가지고 있다고 이야기했다. 그렇지 않으면 준비 함수를 실행할 때 오류가 발생했기 때문에 이것을 믿습니다. 나는 mysqli 연결을위한 컨테이너 역할을하는 싱글 톤 객체를 가지고 있지만 준비 함수가 실패 할 때마다 ===는 사용중인 mysqli가 내 싱글 톤 객체의 mysqli 연결과 같지 않다는 것을 보여 주었다.

Zend Framework의 유일한 문제는 prepare 함수가 null을 반환하면 실패하지 않는다는 것입니다. 이 문제가 보이면 ===를 사용하여 이전에 시작한 연결과 실제로 동일한 지 확인하십시오. 이

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
$query = "..."; 
$mysqli->prepare($query); 

같은 일을하는 경우

0

당신은) (준비하는 이유에 대해 유용한 오류를 확인하기 위해 다음 mysqli::$error을 검사

print_r($mysqli->error);