查询方法不起作用 - 缺少mysqlnd驱动程序

时间:2013-05-13 14:53:27

标签: php mysql mysqli mysqlnd

我的查询类不能在客户端新服务器上运行,因为他们的服务器缺少mysqlnd驱动程序。我如何将方法转换为不使用mysqlnd,也不会搞砸他们所有的类?

function query($query, $params=NULL) {
    if($params!=NULL) {
        $stmt = $this->mysqli->prepare($query); 
        //must turn $params into reference array to bind
        $ref = array();
        foreach ($params as $key => $value) {
            $ref[$key] = &$params[$key]; 
        }
        call_user_func_array(array($stmt,'bind_param'),$ref);
        $stmt->execute();
        $result = $stmt->get_result();
    } else {
        $result = $this->mysqli->query($query);
    }
    if($result){
        $rowArray = array();
        while ($myrow = $result->fetch_object()) {
            $rowArray[] = $myrow;
        }
        return $rowArray;
    }
    return false;
}

1 个答案:

答案 0 :(得分:2)

使用call_user_func_array()的非常类似的方法 您可以在manual page

的“评论”部分找到一些解决方案

我不知道为什么mysqli需要所有这些不必要的麻烦的东西,而PDO开箱即用。将您即将成为的代码与以下代码进行比较:

function query($query, $params=NULL) {
    $stmt = $this->pdo->prepare($query); 
    $stmt->execute($params);
    return $stmt->fetchAll();
}