【问题标题】:php oop mysql queryphp oop mysql 查询
【发布时间】:2011-03-18 16:49:54
【问题描述】:

我不久前收到了一些帮助,但始终无法找出此查询不起作用的原因?我该如何修改它以使其正常工作?

class Posts {

  public static function multipleQuery() {

    $result = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 3")
              , __CLASS__);

      while($object = mysql_fetch_object($result)) {
        $return[] = $object;
      }
      return $return;
  }
}


$array = Posts::multipleQuery();
foreach($array AS $row) {
   echo $row->title;
}

很遗憾,我没有得到任何回报。查询有效,我已经测试过了。

【问题讨论】:

  • 试试var_dump($array), __CLASS__) 也放错了位置。请更具体地说明什么不起作用。
  • 发生了什么,什么不起作用?不管怎样,这看起来不对), __CLASS__);
  • 您是否缺少数据库连接,或者它只是不属于此 sn-p 的一部分?
  • ini_set('error_reporting', E_ALL);ini_set('display_errors', true); 在脚本顶部设置将确保显示错误并帮助您进行调试。
  • 看代码,第3行有无效语法,去掉, __CLASS__)

标签: php mysql oop foreach


【解决方案1】:

mysql_query 的第二个参数应该是一个 mysql 连接句柄。传递你的类名不是这样的句柄,所以你试图在一个不存在的数据库连接上执行查询。同样,您没有错误检查,这会显示此问题:

public static function multipleQuery(){
    $result = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 3") 
              or die(mysql_error());

    while($object = mysql_fetch_object($result)) {
        $return[] = $object;
    }
    return $return;
}

【讨论】:

    【解决方案2】:

    我猜你关闭了错误报告,因此没有看到应该由这一行导致的解析错误:

    $result = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 3"), __CLASS__);

    我看到两个括号关闭,但只有一个打开。

    你也不应该把类名扔在那里。如果有的话,您应该放入数据库连接的对象,而不是类的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2011-07-18
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      相关资源
      最近更新 更多