2013-07-16 2 views
-1

$sql = $pdoObj->execute($query)과 같은 pdo 명령이 있지만 작동하지 않습니다. 결과가 0입니다. 나는 execute()을 호출하기 직전에 $query 변수를 echo'ed 한 다음 execute() 안에 붙이고 코드가 성공적으로 실행되었습니다. 문제없이 내 코드의 다른 부분에서이 작업을 수행 했으므로 여기서 어떤 문제인지 이해할 수 없습니다. 여기 쿼리의 예이다 :변수를 쿼리로 전달할 때 pdo 쿼리가 실행되지 않습니다.

SELECT s.id, s.marca, s.colore, s.prezzo, i.id_scarpa, i.taglia FROM scarpe AS s INNER JOIN info_scarpe AS i ON i.id_scarpa = s.id WHERE 1 = 1 AND taglia IN ('40','41','42') AND colore IN ('rosso', 'nero') 

SELECT * FROM scarpe WHERE 1=1 

SELECT * FROM scarpe WHERE 1=1 AND marca IN ('adidas','nike') 

그들은 $_GET 변수에 기초하여 모든 동적 쿼리 생성한다.

편집 : 물론

if (isset($_GET)) { 

       if (isset($_GET['taglia'])) { 

        $query = " 
          SELECT 
           s.id, s.marca, s.colore, s.prezzo, i.id_scarpa, i.taglia 
          FROM 
           scarpe AS s 
          INNER JOIN 
           info_scarpe AS i 
          ON i.id_scarpa = s.id 
          WHERE 
           1 = 1 
        "; 
        foreach ($_GET as $index => $val) { 
         $a = explode(',', $val); 
         $in = "'" . implode("','", $a) . "'"; 
         $query .= ' AND '.$index.' IN ('.$in.')'; 
        } 
       } else { 
        $query = " SELECT * FROM scarpe WHERE 1=1"; 
        foreach ($_GET as $index => $val) { 
         $a = explode(',', $val); 
         $in = "'" . implode("','", $a) . "'"; 
         $query .= ' AND '.$index.' IN ('.$in.')'; 
        } 
       } 
       echo 'data loaded'; 
      } else { 
       $query = " SELECT * FROM scarpe ORDER BY id DESC "; 
      } 

EDIT2 :

내가 query()하지 execute() 사용하지만 여전히 쿼리 매개 변수와 배열해야한다 execute에 대한

+0

가 쿼리를 생성하는 PHP 코드를 게시 할 수 있을까요? – lexmihaylov

답변

0

인수를 작동하지 않습니다. 당신이 사용하는 의미 중 하나

$result = $pdoObj->query($query); 

또는

$stmt = $pdoObj->prepare($query); 
$stmt->execute(); 
+0

죄송합니다, 내 주요 게시물이 잘못되어'query()'를 사용하고'execute() '를 사용하지 않습니다. 그래도 쿼리를 텍스트가 아닌 변수로 전달할 때만 작동합니다. – user2513485

관련 문제