2013-04-27 52 views
5

在我的代码我尝试从我的分贝与PDO和绑定PARAMS获得的数据,但我一直在得到空数组,这是我的代码:PDO使用fetchall()返回一个空数组

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()); 

没有抛出,可能是什么问题?

+2

重复的[我可以使用PDO准备语句绑定标识符(表或字段名称)或语法关键字?](http://stackoverflow.com/questions/15990857/reference-frequently-asked-questions -about-pdo#15991422) – 2013-04-27 13:01:33

+0

我猜''列'会被像''id“'这样的引号括起来,这是不必要的。你确定'$ needle'返回String吗? – 2013-04-27 14:30:33

回答

1

您不应将列名称绑定为准备的语句参数字符串,因为它会引用列名称。像使用表名一样使用它 - 在将其列入白名单之后。