Предупреждение: mysqli_stmt :: bind_result (): Число переменных привязки не совпадает с числом полей в подготовленной ошибке оператора

У меня был запрос mysql, и я преобразовал его в mysqli (подготовленный оператор), но я столкнулся с проблемой, которая выдает следующую ошибку,

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement 

Код Mysql

 $random_name_generated = vpb_generate_random_name().'.jpg'; //Generated name for uploaded files or images if (move_uploaded_file($_FILES['file_to_upload']['tmp_name'], $final_uploads_location)) { $check_empty_field = mysql_query("select * from `vpb_uploads` where `username` = '".mysql_real_escape_string(strip_tags($username))."' and `firstname` = '".mysql_real_escape_string("")."' and `lastname` = '".mysql_real_escape_string("")."'"); if(mysql_num_rows($check_empty_field) < 1) { mysql_query("insert into `vpb_uploads` values('', '".mysql_real_escape_string($username)."', '', '', '".mysql_real_escape_string($random_name_generated)."', '', '', '', '', '".mysql_real_escape_string(date("dmY"))."')"); $identity = "image_one"; } else { $get_empty_field = mysql_fetch_array($check_empty_field); $image_one = strip_tags($get_empty_field["image_one"]); $image_two = strip_tags($get_empty_field["image_two"]); $image_three = strip_tags($get_empty_field["image_three"]); $image_four = strip_tags($get_empty_field["image_four"]); $image_five = strip_tags($get_empty_field["image_five"]); global $identity; 

Ниже я попытался, хотя это не сработало. Я уже знал, что это не сработает, но я хотел попробовать сам, прежде чем задавать вопрос. И ошибка исходит из $get_empty_field = $stmt->bind_result($stmt); Может ли кто-нибудь помочь мне разобраться, что пошло не так?

 if (move_uploaded_file($_FILES['file_to_upload']['tmp_name'], $final_uploads_location)) { $firstname = '""'; $lastname = '""'; $stmt = $mysqli->prepare("select * from `vpb_uploads` where `username` = ? and `firstname` = ? and `lastname` = ?"); $stmt->bind_param('sss', $username, $firstname, $lastname); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows < 1) { $date = 'date("dmY")'; $image_2 = "''"; $image_3 = "''"; $image_4 = "''"; $image_5 = "''"; $stmt = $mysqli->prepare("insert into `vpb_uploads` (`username`, `firstname`, `lastname`, `image_one`, `image_two`, `image_three`, `image_four`, `image_five`, `date`) values(?,?,?,?,?,?,?,?,?)"); $stmt->bind_param('sssssssss', $username, $firstname, $lastname, $random_name_generated, $image_2, $image_3, $image_4, $image_5, $date); $stmt->execute(); $stmt->close(); $identity = "image_one"; } else { $get_empty_field = $stmt->bind_result($stmt); $image_one = strip_tags($get_empty_field["image_one"]); $image_two = strip_tags($get_empty_field["image_two"]); $image_three = strip_tags($get_empty_field["image_three"]); $image_four = strip_tags($get_empty_field["image_four"]); $image_five = strip_tags($get_empty_field["image_five"]); global $identity; 

Solutions Collecting From Web of "Предупреждение: mysqli_stmt :: bind_result (): Число переменных привязки не совпадает с числом полей в подготовленной ошибке оператора"

Вам нужно изменить

 $get_empty_field = $stmt->bind_result($stmt); 

к

 $get_empty_field = $stmt->bind_result($field1, $field2, $field3); 

Число переменных $fieldx равно числу выбранных полей. Если вы не знаете, сколько их есть, используйте это:

  // Throw an exception if the result metadata cannot be retrieved if (!$meta = $stmt->result_metadata()) { throw new Exception($stmt->error); } // The data array $data = array(); // The references array $refs = array(); // Iterate over the fields and set a reference while ($name = $meta->fetch_field()) { $refs[] =& $data[$name->name]; } // Free the metadata result $meta->free_result(); // Throw an exception if the result cannot be bound if (!call_user_func_array(array($stmt, 'bind_result'), $refs)) { throw new Exception($stmt->error); } 

И затем вы получаете результат, после получения, с $data['field'] ;