2013-02-21 3 views
0

서버 구성을 변경 한 후. MYSQL 및 PHP가 업데이트되었습니다. 나는이 같은 다른 SQL 오류를 받고 있어요 : 나는, $this->dbo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); 추가 코드 오류의 결과 것을 한PDO 관련 데이터베이스 오류

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = '759'' at line 1

SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

.

코드에서 아무것도 변경하지 않아서 synthax 오류가 될 수 없습니까?

UPDATE :

  // Execute statement 
      ($values) ? $this->statement->execute($values) : $this->statement->execute(); 

      // Return associative array 
      return $this->statement->fetch(PDO::FETCH_ASSOC); 
     } 

기능 loadAssoc ($ false로 값 =) {나는 오류 PHP 치명적인 오류 : 실행 사용하는 줄에() 실행 멤버 함수를 호출합니다. 내의 cPanel에서

는 말한다 : 리눅스, PHP 5.3.21, MySQL은 5.5.28 (그냥이 한 업그레이드)는이 문제

를 해결할 것이라고 생각 그리고 같은 내 서버를 업데이트하기 전에 작업 한 이전의 모든 진술 : S

PHP documentation에서
+4

전체 쿼리 예제를 보여주십시오. – silkfire

+0

PDO로 버퍼 된 쿼리를 활성화하려 할 때 '코드 오류'표시 – hek2mgl

+3

첫 번째 오류는 PDO - *와는 아무런 관련이 없습니다 * 구문 적으로 잘못된 * 쿼리를 구성했습니다. – zerkms

답변

1

는 :

If this attribute is set to TRUE on a PDOStatement, the MySQL driver will use the buffered versions of the MySQL API. If you're writing portable code, you should use PDOStatement::fetchAll() instead.

그것은 그 보인다 - 어떤 이유 - 업데이트 된 PDO 확장은 버퍼 쿼리를 지원하지 않는 MySQL의 API에 링크되었다.

기존 코드가 버퍼링 된 쿼리를 사용하고 있으므로 실패합니다. 코드를 변경하지 않고 유일한 해결책은 그 자체가 될 것이다 :


더 내가 추가해야합니다 당신을 돕기 위해

  • 이 라이브러리에 대한 쿼리를
  • 링크 PDO를 버퍼링 지원 MySQL의 클라이언트 라이브러리를 설치 사용중인 OS 및 MySQL, PDO, PHP의 버전 정보 ...

+0

기능 loadAssoc ($ false로 값 =) { \t \t \t \t // 문을 \t \t \t \t ($ 값)을 실행? $ this-> statement-> execute ($ values) : $ this-> statement-> execute(); \t \t \t \t // 반환 연관 배열 \t \t \t \t 반환 $ this-> 명령문 -> 가져 오기 (PDO :: FETCH_ASSOC); \t \t \t} 오류가 발생합니다. PHP 치명적 오류 : 실행을 사용하는 행에서 멤버 함수 execute()를 호출하십시오. PDO가 잘못된 mysql API (여기에있는 유일한 대답)와 연결되어있을 수 있다고 생각합니다. 나는 그것을 살펴보고 mysql, php 및 pdo의 버전으로 돌아올 것입니다. – user1828049

+0

제 cpanel에 다음과 같이 말합니다 : linux, php 5.3.21, mysql 5.5.28 (그냥이 하나에 업그레이 드) 문제를 해결할 것이라고 생각 – user1828049

+0

나는 cpanel 지원에 대한 질문을 할 것이다. (아직하지 않았다면) – hek2mgl