如何在没有绑定列的PHP PDO中使用列名

时间:2013-10-04 05:10:23

标签: php pdo

在使用php pdo和mySql而不使用$row[‘columnName’]时,是否有一种方法可以在输出没有绑定列的数据时直接使用列的名称。

例如:我目前的方法

$sql = "select id, name, address, country from members where country = :country";
$stmt=$conn->prepare($sql);
$stmt->execute(array(':country' => $country));
while( $row = $stmt->fetch() ) { //I can forgo the while loop.
    echo $row[‘name’]; //Can I use $name here?
    echo $row[‘address’];
    echo $row[‘country’];
}

而不是使用$row[‘colName’],是否有可能以某种方式使用$colName本身?我知道ezSql这样做,但我没有使用ezSql,因为它不支持预准备语句。如何才能做到这一点?也许使用for each?有可能吗?

我知道我可以绑定列,但我也试图避免这样做。将代码保持在最低限度。

2 个答案:

答案 0 :(得分:3)

如果您确实不想绑定列或使用数组引用或对象属性,并且不介意污染当前的变量范围,请尝试这个丑陋的黑客

while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    extract($row);
    echo $name;
    // etc
}

正如我在previous, duplicate question的回答中所提到的,PDOStatement::bindColumn会更好。我真的不知道你想通过“将代码保持在最低限度”来实现什么,而不是证明自己不专业。

答案 1 :(得分:0)

您可以使用此代码:

extract($row);

然后你有:

$name$address