是的你可以。最简单的方法是使用pdo,尽管至少还有一些其他扩展可以使用它。
do在PDO对象而不是PDOStatment上设置属性。
$PDO->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, true);
而已。然后,您将获得类似的关联数组键
$row['myTable.myColumn']。如果您也获取了一个对象(例如,通过
PDO::FETCH_OBJECT),则请注意,因为您需要访问诸如
$obj->{'myTable.myColumn'}
手册说该
PDO::ATTR_FETCH_TABLE_NAMES
属性仅受某些驱动程序支持。如果上述方法不起作用,则 可以 代替。$pdoStatement->setFetchMode(PDO::FETCH_NUM);
$pdoStatement->execute();
//build our associative array keys
$qualifiedColumnNames = array();
for ($i = 0; $i < $pdoStatement->columnCount(); $i++) {
$columnmeta = $pdoStatement->getColumnmeta($i);
$qualifiedColumnNames[] = “$columnmeta[table].$columnmeta[name]”;
}//fetch results and combine with keys
while ($row = $pdoStatement->fetch()) {
$qualifiedRow = array_combine($qualifiedColumnNames, $row);
print_r($qualifiedRow);
}
其他数据库扩展使用相同的基本模式
MySQL的$res = mysql_query($sql);//build our associative array keys$qualifiedColumnNames = array();for ($i = 0; $i < mysql_num_fields($res); $i++) { $columnmeta = mysql_fetch_field($res, $i); $qualifiedColumnNames[] = "$columnmeta[table].$columnmeta[name]";}//fetch results and combine with keyswhile ($row = mysql_fetch_row($res)) { $qualifiedRow = array_combine($qualifiedColumnNames, $row); print_r($qualifiedRow);}
mysqli
$res = $mysqli->query($sql);//build our associative array keys$qualifiedColumnNames = array();foreach ($res->fetch_fields() as $columnmeta) { $qualifiedColumnNames[] = "{$columnmeta->table}.{$columnmeta->name}";}//fetch results and combine with keyswhile ($row = $res->fetch_row()) { $qualifiedRow = array_combine($qualifiedColumnNames, $row); print_r($qualifiedRow);}
这也应该与表别名一起使用(在php 7.1中测试)-合格的列名将使用表别名。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)