在使用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
?有可能吗?
我知道我可以绑定列,但我也试图避免这样做。将代码保持在最低限度。
答案 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
等