2010-04-24 6 views
0

편집 :MySQL의 쿼리

CREATE TABLE `ci_doctrine`.`user` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
    `username` VARCHAR(255) NOT NULL , 
    `password` VARCHAR(255) NOT NULL , 
    `first_name` VARCHAR(255) NOT NULL , 
    `last_name` VARCHAR(255) NOT NULL , 
    UNIQUE (`username` 
) 
) 
: 내 교리 쿼리 (아래 참조) 작동하지 않았다 /이 데이터베이스를 만들 때 내가

ci_doctrine.

을 왼쪽 있기 때문에 이러한 오류가 있었다 생산하는 이유

편집 끝

Doctrine 연결 개체를 사용하여 평면 SQL 쿼리를 작성하고 결과를 표시하려면 어떻게해야합니까? 예를 들어, 어떻게 수행 할 : 나는 또한 시도했다 같은 교리 뭔가 (이 예제가 작동하지 않습니다)

$search_key = 'search_for_this'; 

$conn = Doctrine_Manager::connection(); 

$conn->execute('SELECT * FROM table_name WHERE column_name LIKE ?)', $search_key); 

echo $conn; 

사용

SELECT * FROM table_name WHERE column_name LIKE '%anything_similar_to_this%'; 

:

$search_key = 2; 
$q = new Doctrine_RawSql(); 
$result = $q->select('column_name') 
    ->from('table_name') 
    ->where('id = ?', $search_key) 
    ->execute(); 

echo $result; 

답변

1

교리가 사용하는 그것은이다 DQL이라고하는 자체 쿼리 언어. 또한 쿼리 클래스를 사용하여 Doctrine_Query라는 쿼리를 처리합니다. 이 클래스를 통해 소위 쿼리 작성기를 사용하여 쿼리를 작성할 수 있습니다.

http://doctrine-project.com의 설명서를 참조하여 정확하게 작동하는지 확인할 수 있습니다.

1

아마도 오류를 일으키는 불필요한 괄호가 있습니다. 변경 시도 :

SELECT * FROM table_name WHERE column_name LIKE ?) 

에 : 그것은 여전히 ​​작동하지 않으면

SELECT * FROM table_name WHERE column_name LIKE ? 

는 오류 메시지를 게시하려고합니다.

+0

+1. 나는 변경 : $ conn-> execute ('SELECT * FROM table_name WHERE column_name LIKE?', $ search_key); $ conn-> execute ('SELECT * FROM table_name WHERE column_name LIKE?', $ search_key); 심각도 : 4096 메시지 : Doctrine_Connection :: execute()에 전달 된 인수 2는 배열, 주어진 문자열, 호출해야합니다 ... 심각도 : 경고 메시지 : 잘못된 인수가 foreach() ... Fatal에 제공되었습니다. 오류 : 'SQLSTATE [HY093] 메시지와 함께'Doctrine_Connection_Mysql_Exception '오류가 발생했습니다 : 잘못된 매개 변수 번호 : 매개 변수가 바인딩되지 않았습니다 ... – Anthony