示例:
$query = $mydb->query('PRAGMA table_info("mytable")');
//variable query has now type of PDOStatement Object
print_r($query->fetchAll(PDO::FETCH_COLUMN,1)); // this result is ok
print_r($query->fetchAll(PDO::FETCH_COLUMN,2)); // but this result gives empty array
那么有什么方法可以重用语句对象吗?
$query = $mydb->query('PRAGMA table_info("mytable")');
// Variables passed to be bound are passed by reference.
// Columns are based on a *1* index or can be referenced by name.
$query->bindColumn(1, $bound_column1);
$query->bindColumn(2, $bound_column2);
$query->fetchAll();
print_r($bound_column1);
print_r($bound_column2);
当然,您可以重用语句对象。
但请考虑一下:如果您已经获取了所有PHP手册,为什么您希望第二个fetch-all语句仍然可以返回一些东西?
print_r($query->fetchAll(PDO::FETCH_COLUMN,1)); // this result is ok
print_r($query->fetchAll(PDO::FETCH_COLUMN,2)); // but this result gives empty array
PDO有一个向前移动的光标。最后,您只能关闭光标PHP手册并再次执行。
您可以为此重用语句对象。
但我认为您不希望/不需要为您的代码真正做到这一点。相反,获取所有列,然后通过它们的索引在返回的数据中访问它们:
print_r($query->fetchAll(PDO::FETCH_NUM)); // this result is ok
您将在输出中看到,现在每行都有0索引的列编号,因此您可以通过列索引访问返回数据中的列——每行一行。
$array = $query->fetchAll( args );
然后根据需要使用$array。