2013-04-27 33 views
5

w moim kodu Im próbuje pobrać dane z mojego db z PDO i wiążą params ale ciągle coraz pustą tablicę, to mój kod:PDO fetchAll() zwraca pustą tablicę

try{ 
    $pdo =new PDO('mysql:host=localhost;dbname=***', '***','***'); 
    $pdo->setAttribute(pdo::ATTR_ERRMODE, 
        pdo:: ERRMODE_EXCEPTION); 
    $pdo->query('set names "utf8"'); 
} 
catch (PDOException $e) { 
    die('error connectin database'); 
} 
$table = 'products'; 
$column = 'id'; 
$niddle = '70'; 
$sql = "SELECT * FROM `{$table}` WHERE "; 
$sql .= ":column LIKE :niddle"; 
$pre = $pdo->prepare($sql); 
$pre->bindParam(':column', $column ,PDO::PARAM_STR); 
$pre->bindParam(':niddle', $niddle, PDO::PARAM_STR); 
$result = $pre->setFetchMode(PDO::FETCH_ASSOC); 
$pre->execute(); 
print_r($pre->fetchAll()); 

tam nie ma wyjątek rzucony, jaki może być problem?

+2

Duplikat [Czy mogę użyć instrukcji przygotowanej przez PDO do powiązania identyfikatora (nazwa tabeli lub pola) lub słowa kluczowego składni?] (Http://stackoverflow.com/questions/15990857/reference-waquited-asked-questions -about-pdo # 15991422) –

+0

Domyślam się, że '$ column' będzie otoczone cudzysłowami takimi jak" id ", co jest niepotrzebne. Czy na pewno '$ needle' zwraca ciąg? –

Odpowiedz

1

Nie powinieneś wiązać nazwy kolumny jako przygotowanego ciągu parametrów, ponieważ będzie podawać nazwę kolumny. Zrób tak jak przy nazwie tabeli, po prostu użyj go - po dodaniu białej listy.