如何在不绑定列的情况下在 PHP PDO 中使用列名


How to use column names in PHP PDO without binding columns

有没有办法在使用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?可能吗?

我知道我可以绑定列,但我也在努力避免这种情况。将代码保持在最低限度。

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

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

正如我在回答您之前重复的问题时提到的,PDOStatement::bindColumn会更好。我真的不知道你想通过"将代码保持在最低限度"来实现什么,除了证明自己不专业。

您可以使用以下代码:

extract($row);

然后你有:

$name$address等。