如何使用带变量的select语句

时间:2014-06-01 16:44:02

标签: php mysql pdo prepare

$colName = rent_due_date

我正在尝试使用$colName作为我的列名,并使用该列名运行SELECT语句。

如何在准备好的$colName语句中使用SELECT并回复$row[$colName]

<?php
$colName =  $_GET['colName'];
$smt = $pdo->prepare('SELECT * FROM dhr WHERE ? < curdate()');
$smt = $pdo->bindParam(1,$colName);
if($smt){
if($smt->execute()){
while($row = $smt->fetch()){ 
?>
// echo in the table as below   
<td class="center "><?php echo $row[$colName];?></td>

错误

  

调用未定义的方法PDO :: bindParam()

1 个答案:

答案 0 :(得分:1)

  • 您只能绑定statement对象上的参数而不是PDO 连接。 这就是你得到Fatal error: Call to undefined method PDO::bindParam()
  • 的原因
  • 您不能将列名绑定为占位符

所以改变:

$colName =  $_GET['colName'];
$query = "SELECT * FROM dhr WHERE $colName < NOW()";
echo $query;
$smt = $pdo->prepare($query);
if($smt){
echo "prepare() sucess\n";
$result = $smt->execute();

    if($result){
    echo "execute() sucess\n";
    $data = $smt->fetchAll(PDO::FETCH_ASSOC);
    var_dump($data);
    //display table
    }else{
    echo "execute() failed\n";
    }
}else{
echo "prepare() failed\n";
}