在选择查询中将变量作为列名传递

时间:2015-06-25 08:34:46

标签: php mysql pdo

我的PHP顶部有一个变量集:

$abc = "paid";

现在我需要将它作为列名传递给下面的查询。我尝试了以下但是没有用。

$sql = "SELECT customerID FROM payments WHERE :myVar = :credit";
$stmt = $connect->prepare($sql);
$stmt->execute(array(':credit'=>"0", ':myVar'=>$abc));

如何将$abc作为列名传递给select查询?

2 个答案:

答案 0 :(得分:0)

Curly brakets(来自PHP docs):

  

复杂(卷曲)语法

     

这不称为复杂,因为语法很复杂,但因为它允许使用复杂的表达式。

     

可以通过此语法包含任何具有字符串表示形式的标量变量,数组元素或对象属性。只需以与字符串外部相同的方式编写表达式,然后将其包装在{和}中。

您的代码应该类似于:"SELECT customerID FROM payments WHERE {$abc} = :credit";

答案 1 :(得分:-2)

你不能在准备好的查询中绑定colname / table name,你可以这样做:

$sql = "SELECT customerID FROM payments WHERE $abc=:credit";
$stmt = $connect->prepare($sql);
$stmt->execute(array(':credit'=>"0"));