2012-10-04 2 views
0

내가 지금처럼 odbc_prepare 및 odbc_execute 문을 사용하여 쿼리를 작성하는 것을 시도하고있다 :이 작동하지 않는 몇 가지 이유 물론

$query = 'SELECT * FROM TABLE WHERE names IN (?) AND age < ?'; 
$names = "Joe, John, Billy"; 
$age = 21; 
$result = odbc_prepare($this->connection, $query); 
odbc_execute($query, array($names, $age)); 

을 내가 여러 시도 내 $ names 변수 형식의 변형. odbc_prepare와 WHERE IN 절을 사용하는 쿼리의 예제를 찾을 수 없었기 때문에 도움을 받으실 수 있습니다.

OpenEdge 10.2A ODBC 드라이버를 사용하여 진행 데이터베이스에 연결하고 있습니다.

답변

1

그냥 미래에 모든 사람들이 내가이 특정 문제에 대한 해낸 알려합니다 : 다른

$names = array("Joe","John","Billy"); 

$queryVars = array(); 
foreach($names AS $name){ 
    $queryVars[] = $name; 
} 

$paramBind = implode(',', array_fill(0, count($names), '?')); 
$query = 'SELECT * FROM TABLE WHERE names IN ('.$paramBind.')'; 

odbc_execute($query, $queryVars); 

희망 누군가가 제안으로이

0

이상한 방법으로 array()을 사용하려는 것 같습니다.

같은 일을보십시오 :이 제공

$query = 'SELECT * FROM TABLE WHERE names IN (?)' 
$names = array("Joe", "John", "Billy"); 
$result = odbc_prepare($this->connection, $query); 
odbc_execute($query, array(implode(',', $names)); 

:

여기
$names = array("Joe", "John", "Billy"); 
foreach($names as $name) 
{ 
    $query = 'SELECT * FROM TABLE WHERE names IN (?)' 
    $result = odbc_prepare($this->connection, $name); 
    odbc_execute($query, $name); 
} 

도 나는 그것을 같이해야한다고 생각 수동에서 읽기 odbc_prepare()

+0

내가 그것을 분리해서하는 경우 그 것을 유용 나타냅니다 발견 나는 하나의 변수와 반대로 3 개의 변수를 전달하고있다. 나는 워드 프로세서를 읽었으며, 모든 변수를 한 번에 하나씩 배열에 전달해야한다는 것을 이해했다. WHERE names =가있는 쿼리가 있다면? 나이

+0

그러면 세 번에 걸쳐 문장을 실행하고 싶습니까? – grid

+0

아마도 더 좋은 예제는 다음과 같습니다 : 'SELECT * FROM TABLE IN WHAT TABLE WHERE 이름은 ?, –

0

에 좀 더 정보입니다 1 개의 요소가있는 배열. 요청 된 매개 변수가 1 개 있기 때문입니다. 요소에 'Joe, John, Billy' 문자열이 포함되어 있으며이 값은 IN 절에 대한 올바른 값입니다.

+0

내가 아는 마지막 배열을 폭발시킬 수 없습니다. –

+0

죄송합니다. 오타는 여전히 내시경을 의미하지 않습니다. – JvdBerg

+0

아직 주사위가 없습니다. 나는 심지어 $ name = "Joe", "John", "Billy"와 같은 이름까지 설정했습니다. 바인딩이 IN 절을 지원하지 않는 것처럼 작동하지 않습니다. –