MySQLi bind_param问题在我的函数中

时间:2013-11-30 12:06:46

标签: php mysql arrays mysqli prepared-statement

我有一个为我处理MySQLi准备查询的函数。此功能的设计使其易于键入,因此我无需键入3-4行即可使用简单的查询。这是代码:

public function preparedQuery($query, $values, $display = false)
{    
    $mysqli = $this->connectDatabase();

    $repeat = str_repeat('?', count($values));
    $repeat = trim($repeat, ',');

    $stmt = $mysqli->prepare($query);

    $types = str_repeat('s', count($values));

    $bind = array();

    foreach($values as $key => $val)
    {
        $bind[$key] = &$values[$key];
    }
    var_dump($query, $types, $bind);

    array_unshift($bind, $types);
    call_user_func_array(array($stmt, 'bind_param'), $bind);

    $stmt->execute();

    if($display)
    {
        $res = $stmt->get_result();

        return $res->fetch_assoc();
    }
        return true;
}

正如你所看到的,这个功能对我来说是最重要的。我可以运行SELECT,UPDATE和SELECT查询,它会执行得很好。但是,当我尝试运行INSERT查询时,我收到以下错误:

  

警告:call_user_func_array()期望参数1有效   回调,第一个数组成员不是有效的类名或对象   第40行的C:\ xampp \ htdocs \ system \ mysqli.class.php

     

致命错误:在非对象中调用成员函数execute()   第42行的C:\ xampp \ htdocs \ system \ mysqli.class.php

我正在尝试运行的是:

以下是一些使用示例:

  

var_dump($ db-> preparedQuery(“INSERT INTO texts(indentifier,display_text)VALUES(?,?)”,array('test1','test2')));

这是var_dump的输出:

  

string(59)“INSERT INTO texts(indentifier,display_text)VALUES(?,?)”string(2)“ss”array(2){[0] => & string(5)“test1”[1] => & string(5)“test2”}

我做错了什么?

0 个答案:

没有答案