2

我正在从普通的 mysql_* 迁移到 PDO(是的,我知道日历上是 2012 年)。
我正在编写一个简单的包装类,以便有机会在我的网站上执行 $f=$db->FetchAll("SELECT * FROM...") 之类的操作。这就是我正在做的事情:

    public function Query($q, $errmessage="", $params=array()) {
    try {
    $stmt=$this->connect->prepare($q);
    if (is_array($params) && count($params)>0) {
    $stmt->execute($params);
    } else {
    $stmt->execute();
    }
    return $stmt;
    } catch(PDOException $e) {
    die($errmessage.": ".$e->GetMessage());
    }
    }

   public function Fetch($q, $arraylist=0) {
    if (!is_object($q)) { // Assuming it's a raw query
    $stmt=$this->Query($q, "Unable to process the query for fetching");
    } else $result=$q;
    $f=$stmt->Fetch();
    return $f;
}

这会引发“一般错误 2014”异常。
任何帮助表示赞赏。
谢谢!

4

1 回答 1

2

2014不是年份,是错误代码。下次尝试谷歌搜索错误。

$pdo->query("INSERT INTO test(some) VALUES ('1111111111111111'), ('1111111111111'); -- 我是一条 SQL 评论,删除我将解决这个问题");

因为 ”;” 这是一个多语句,执行两个查询,而第二个只是一个注释。可以使用 PDOStatement->nextRowset 访问第二个“结果”。[资源]

或者:

在花了几个小时试图找出我们在新服务器上出现此错误的原因之后,在相同的代码在其他服务器上运行良好之后,我们发现问题出在我们的 Web 服务器上运行的旧 MySQL客户端库和最新版本MySQL服务器运行在数据库服务器的盒子上。[资源]

于 2012-11-15T21:57:29.647 回答