0

有没有办法在使用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’];
}

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

我知道我可以绑定列,但我也在努力避免这种情况。尽量减少代码。

4

2 回答 2

3

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

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

正如我对您之前的重复问题的回答中提到的那样,PDOStatement::bindColumn会更可取。除了证明自己不专业之外,我真的不知道您通过“将代码保持在最低限度”来达到什么目的。

于 2013-10-04T05:13:28.883 回答
0

您可以使用以下代码:

extract($row);

然后你有:

$name,$address等。

于 2013-10-04T05:13:13.320 回答