【问题标题】:Can't find ussage example of a simple query and having problems找不到简单查询的用法示例并出现问题
【发布时间】:2014-04-17 19:39:13
【问题描述】:

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

我找不到任何没有参数的 PDO 查询的使用示例。 mysqli 是我的后备...尽量避免使用 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 时,我是否必须在完成连接后关闭连接? / 我该怎么做?

【问题讨论】:

  • 为什么要同时使用pdo和mysqli。
  • 你甚至没有运行查询,你怎么能获取任何东西?如果您使用 PDO 执行 SELECT 查询,您通常使用 $dbh-&gt;closeCursor(); 关闭它。
  • $db->query 的意思是运行它对吗?或者至少这就是我使用 mysql 驱动程序的方式......
  • 对不起,我的错。没看到。
  • 查看 php 文档 ca2.php.net/pdo.query。第一个示例不使用任何参数。

标签: php mysql pdo mysqli


【解决方案1】:

您尝试在$db 上调用fetch_array 而不是在$types 上。 $db-&gt;query() 返回您存储在 $types 中的结果集。使用此结果集,您可以使用 fetch_array 等函数遍历结果。

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

// 编辑:关闭连接总是更好,因为代码更干净。通常,当您删除对象时连接也会关闭(脚本完成时也会发生这种情况)。

【讨论】:

  • 我真的不明白我写了$db-&gt;fetch_array($types);所以肯定它应该从附加到 $types 的查询中获取结果...?
  • 不。 $db->查询返回你需要调用fetch_array的对象。我会在几秒钟内给你一个例子
  • 这仍然没有解决我的问题。不管这意味着什么,它都说它不是对象。
  • 表示查询函数没有返回对象而是false。请检查您的 php-error-log。查询功能失败。所以你的sql可能有错误
  • 在我的例子中有一个小错误。它必须是 $db->query ofc。修复。希望这不是你得到的错误:D
【解决方案2】:

使用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 />';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多