2017-01-25 12 views
0

쿼리 목록과 함께 패키지를 만들고 싶습니다.kohana freamwork에서 원시 쿼리를 수행하는 방법

그것은 같은 같은 업데이트 쿼리입니다 :

UPDATE table 
SET column = XXX 
WHERE column = XXX AND column2 = XXX; 

UPDATE table 
SET column = XXX 
WHERE column = XXX AND column2 = XXX; 

UPDATE table 
SET column = XXX 
WHERE column = XXX AND column2 = XXX; 

나는 하나 개의 패키지에 이러한 1000 개 쿼리를 가지고있다. 지금은 make 쿼리를 원합니다.

당신은 당신의 SQL 구문에 오류가 있습니다; 때마다 나는 그와 같은 오류가 발생하기 때문에 시도

는 실패를 할 수 있지만, 가까운 구문을 사용하기 위해 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오.

나는이 쿼리를 phpmyadmin에 복사하고 수행합니다. 이러한 쿼리가 작동합니다!

나는 준비된 쿼리를 사용하는 변수가 있으며 다른 방식으로이를 시도하고 있습니다.

Database::instance()->query(NULL,$sql); 
DB::query(5,$sql)->execute(); 
DB::query(Database::UPDATE,DB::expr($sql))->execute(); 
DB::query(Database::UPDATE,$sql)->execute(); 

했지만 작동하지 않습니다/

누구나가 어떻게 알아?

답변

0

그냥 데이터베이스 인스턴스에서 방법 쿼리 전화 :

/** @var Database $db */ 
$db = Database::instance(); 
$db->query(Database::UPDATE, 'UPDATE table SET column = XXX WHERE column = XXX AND column2 = XXX;'); 

을하지만 당신은 하나 개의 쿼리에서 여러 SQL 문을 실행하려면이 상자 밖으로 불가능합니다. 기본적으로 Kohana는 오래된 mysql API를 사용하고 mysql_query는 한 번의 호출로 여러 쿼리를 지원하지 않습니다.

그것은 당신이 내가 아는 3 방법은 여러 SQL 문을 사용하려면 : Kohana에 대한 전

  1. 언젠가 내가 mysqli 지원을 위해 모듈을 본을, 당신은 그를 발견하고 수정하려고 할 수 있습니다에 새 메소드를 추가하는 것입니다 use http://php.net/manual/en/mysqli.multi-query.php mysqli :: multi_query는 하나의 쿼리에서 여러 SQL 문을 실행할 수있다.
  2. 또는 PDO로 전환 할 수 있습니다. 이 경우 Kohana의 설명서에 따라 데이터베이스 구성 파일을 변경하여 모델의 열에 대한 맵을 추가해야합니다.
  3. 또는이 쿼리에 대해서만 새 PDO 연결을 만듭니다 (트랜잭션을 사용하지 않는 경우 변형 2보다 쉽습니다).
변형 2 또한

3 일부 PDO 설정을 설정해야합니다 https://stackoverflow.com/a/6461110/419665

P.S.을 구성 이름 별 호출 데이터베이스 인스턴스의 경우 :

Database::instance('config_name');