2011-11-01 3 views
0

내가 좋아하는 조금 복잡한 MySQL 표준 쿼리와 PDO를 사용해야하는 방법의 차이점은 무엇입니까?

if(!is_empty($_GET['cidade'])){ 
    $cidade = safe_string_escape($_GET['cidade']); 
     $cidadestr="AND cidade LIKE '%$cidade'"; 
} 
else $cidadestr=""; 

if(!is_empty($_GET['dormitorios'])){ 
    $dormitorios = $_GET['dormitorios']; 
     $dormitoriosstr="AND dormitorios = '$dormitorios'"; 
} 
else $dormitoriosstr=""; 

$busca = "SELECT * FROM imoveis WHERE status = 'Publicado' $cidadestr $dormitoriosstr; 

내가 PDO로 변경, 단지 기본 쿼리를 mysqls 사용하여이 쿼리를 가지고 :

if(!is_empty($_GET['cidade'])){ 
    $cidade = safe_string_escape($_GET['cidade']); 
     $cidadestr="AND cidade LIKE '%$cidade'"; 
} 
else $cidadestr=""; 

if(!is_empty($_GET['dormitorios'])){ 
    $dormitorios = $_GET['dormitorios']; 
     $dormitoriosstr="AND dormitorios = '$dormitorios'"; 
} 
else $dormitoriosstr=""; 


$busca = "SELECT * FROM imoveis WHERE status = :status :cidadestr :dormitoriosstr; 
$buscasql = $conn->prepare($busca); 
$buscasql->bindValue(':status', 'Publicado', PDO::PARAM_STR); 
$buscasql->bindValue(':cidadestr', $cidadestr, PDO::PARAM_STR); 
$buscasql->bindValue(':dormitoriosstr', $dormitoriosstr, PDO::PARAM_STR); 
$buscasql->execute() or die(print_r($buscasql->errorInfo())); 

이 작품은, 내가 행 개수에 아무것도 없어하지 않습니다() 또는 사물 등 이, 그래서, 내가 잘못하고있는 것 같아요, 그래서, 어떻게 옳은 방법은 PDO로 간단한 MySQL에서 변경을 할 수 있습니까? 어떤 도움?

답변

0

PDO는 휴대용 환경에서 매우 유용 할 수있는 추상화 계층을 제공합니다. Memcached 및 MySQL과 같은 다른 공급자에 대해 데이터를 쿼리 할 수도 있지만 기본적으로 지원되는 것이 확실하지는 않습니다. 그러나 우수한 문맥상의 지원을 제공합니다.

0

해결! 그것은 않았다

if(!is_empty($_GET['business'])){ 
    $buscasql.=" AND businessLIKE :business"; 
} 

$buscasql = $conn->prepare($busca); 

if(!is_empty($_GET['business'])){ 
    $business= '%'.safe_string_escape($_GET['business']).'%'; 
    $buscasql->bindValue(':business', $business, PDO::PARAM_STR); 
} 

우리가 당신은 MySQL은, 그런 준비된 문을 사용하는 경우 매개 변수를 수동으로 탈출 할 필요가 없습니다

+0

''여기 라운드 'POG 말을 사용하므로, 같은 ... 모든 것을 바인딩 당신을 위해 그것을 할 것입니다. – bfavaretto

+0

그리고 POG는 영어로 [WOP] (http://uncyclopedia.wikia.com/wiki/Workaround-oriented_programming)가 될 것입니다. ':)' – bfavaretto

관련 문제