Php 尝试插入mysql时调用用户func数组错误

Php 尝试插入mysql时调用用户func数组错误,php,mysqli,Php,Mysqli,我有一个insert函数,用于大多数插入操作。看起来是这样的: //insert function public function insert($prep, $table, $data) { $columns = ""; $values = array(); $val = array(); foreach ($data as $column => $value) {

我有一个insert函数,用于大多数插入操作。看起来是这样的:

//insert function
    public function insert($prep, $table, $data) {

          $columns = "";
              $values = array();
          $val = array();

        foreach ($data as $column => $value) {
                  $columns .= ($columns == '') ? '' : ', ';
                  $columns .= $column;
                  $values[$column] = &$data[$column];
        }

        $a = str_repeat('?, ', count($data) );
        $b = substr_replace($a, '', -2);

        $q = $this->mysqli->prepare("INSERT INTO $table ($columns) VALUES ($b)");
        call_user_func_array( array($q, 'bind_param'), array_merge(array($prep), $values) );
        $q->execute();
        $q->close();

        //return the last ID used in the database.
        return $this->mysqli->insert_id;

        $this->mysqli->close();
}
对于所有插入,上述函数都可以正常工作。我需要做的就是:

$db = new Db();

  $data = array(
    "message_title" => "'$this->messageTitle'",
    "message_body" => "'$this->messageBody'",
    "sender_id" => $this->senderID,
    "receiver_id" => $this->receiverID,
    "message_date" => date("Y-m-d H:i:s")
  );

$db->insert('ssiis', 'messages', $data);
但是,当我尝试添加到一个新表时,我遇到了一个错误,该表将保存搜索

public function addSearchTerm($searchTerm, $user_id, $today) {

$addSearch = array();

$addSearch = array(
  "user_id" => $user_id,
  "term" => $searchTerm,
  "search_date" => $today
);

$prep = 'iss';

$this->db->insert($prep, 'search_tems', $addSearch);

}
插入函数的一些var_转储

var_dump($columns);
string(26) "user_id, term, search_date" 

var_dump($b);
string(7) "?, ?, ?"

var_dump($values); 
array(3) { ["user_id"]=> &int(64) ["term"]=> &string(9) "Wolverine" ["search_date"]=> &string(19) "2014-12-01 10:12:50" }
警告呢

警告:call_user_func_array()要求参数1为有效回调,第169行/var/www/vhosts/example.com/httpdocs/com/classes/Db.class.php中的第一个数组成员不是有效的类名或对象致命错误:调用成员函数execute()在第170行的/var/www/vhosts/example.com/httpdocs/com/classes/Db.class.php中的非对象上


打印输出是多少($q);奇怪的它不会显示任何内容。
var\u dump
给出
bool(false)
这就是问题所在。。。您的查询有问题,因此,$q而不是对象是false,因此false->bind_param()不可调用。。。