Неверное количество параметров дляbind_param в пользовательском классе mysqliPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Неверное количество параметров дляbind_param в пользовательском классе mysqli

Сообщение Anonymous »

Попытка создать собственный класс/оболочку mysqli с $this->_mysqli в качестве экземпляра mysqli:

Код: Выделить всё

// Query string generator
private function gen_query($type, $data, $table){
switch ($type) {
case 'ins':
$query = "INSERT INTO " .$table .' ';
$query .= implode_key($opr= ', ', $data);
$query .= " VALUES " . value($data);
break;
case 'select':
// yet to generate
default:
$query ='';
break;
}
return $query;
}

// Generates bind parameters
private function gen_param($data){
$_param = "'";
foreach ($data as $v) {
$_param .= $this->detect_type($v);
}
$_param .= "', ";
foreach ($data as $k=>$v) {
if($v == end($data)) {
$_param .="$$k";
continue;
}
$_param .= "$$k, ";
}
return $_param;
}

public function insert( $table, $data ){
$table  =  $this->_prefix . $table;
$table = $this->escape($table);
$query = $this->gen_query('ins', $data, $table);
$stmt = $this->_mysqli->prepare($query);
foreach ($data as $key => $value) {
$$key = $value;
}
$test = $this->gen_param($data);
if(!$stmt->bind_param($test)) {
echo $this->_mysqli->error;
}
if($stmt->execute()){
print 'Success!'.'
';
} else {
die('Error : ('. $this->_mysqli->errno .') '. $this->_mysqli->error);
}
}
Итак, когда пользователь вводит данные

Код: Выделить всё

$data = [ 'first_name' => 'foo', 'last_name' => 'bar', 'another_field' => 'blah'];
$db->insert('t1', $data);
Я получаю следующую ошибку:

Код: Выделить всё

 Warning: Wrong parameter count for mysqli_stmt::bind_param() in path\to\class-db.php on line 138
Это строка 138: if(!$stmt->bind_param($test))

Подробнее здесь: https://stackoverflow.com/questions/474 ... sqli-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»