可以';我找不到一个简单查询和有问题的例子


Can't find ussage example of a simple query and having problems

我正在尝试做一些非常简单的事情。

我找不到任何没有参数的PDO查询的使用示例。优衣库是我的退路。。。试图避免MYSQL,因为每个人都在抱怨我不使用它。

所以我尝试了这个:

$db = new mysqli('hostname', 'user', 'pass', 'db');
$dbh = new PDO("mysql:host=hostname;dbname=db", "user", "pass");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$types = $db->query("SELECT * from `a_types` ORDER BY `priority`");
while ($type = $db->fetch_array($types)) {
echo '<a href="{$_SERVER[PHP_SELF]}?{$type[title]}=choose">I have a broken {$type[title]}.</a> <br />';
}

但我遇到了以下问题:Fatal error: Call to undefined method mysqli::fetch_array()

我做错了什么?

还有:当我调用$db时,我是否必须在完成连接后关闭连接?/我该怎么做?

您尝试在$db上而不是在$types上调用fetch_array$db->query()返回存储在$types中的结果集。有了这个resut集,您可以使用fetch_array等函数循环查看结果。

$result = $db->query('SELECT blabla');
while($type = $result->fetch_array()){
    // do stuff
}

//编辑:关闭连接二人组以获得更干净的代码总是更好的。通常,删除对象时连接也会关闭(脚本完成时也会关闭)。

使用PDO::query中的示例#1,如Igputa所评论。

$dbh = new PDO("mysql:host=hostname;dbname=db", "user", "pass");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$types = $dbh->query("SELECT * from `a_types` ORDER BY `priority`");
$types->setFetchMode(PDO::FETCH_ASSOC);
while ($type = $types->fetch()) {
    echo '<a href="{$_SERVER[PHP_SELF]}?{$type[title]}=choose">I have a broken {$type[title]}.</a> <br />';
}