使用 PDO 处理数据库。
原来只能用这个循环了foreach
?
因为我在输出处得到一个数组$pdo->fetchAll()
......
以前用过while
,疑问,while
还是foreach
迭代记录更快?
我的代码有什么问题,是否可以迭代结果while
?
class bb
{
public $db_id;
public $query_id;
function connect()
{
$this->db_id = new PDO('mysql:host=localhost;dbname=table', 'user', 'pass', [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
!$this->db_id && $this->display_error('No connect');
}
function query($sql, $value = [])
{
!$this->db_id && $this->connect();
!($this->query_id = $this->db_id->prepare($sql))
&& $this->display_error(false, $sql);
$this->query_id->execute($value);
return $this->query_id;
}
function fetchAll()
{
return $this->query_id->fetchAll();
}
function display_error($error, $sql= '')
{
die('-----------');
}
}
$pdo = new bb;
$pdo->query("SELECT * FROM `error` WHERE `code` in (?,?) ORDER BY `type` ASC", [404,410]);
//while ($r = $pdo->fetchAll())
// print('sdf');
foreach ($pdo->fetchAll() as $r)
echo $r['url'].PHP_EOL;
可以这样做:
function fetchAll()
{
return $this->fetchAll();
}
也就是说,访问对象内部、对象或其他东西。我不明白...