Mysqli Подготовить заявление – Возвращение ложно, но почему?

У меня есть функция, которая генерирует подготовленный оператор INSERT на основе ассоциативного массива имен столбцов и значений, которые должны быть вставлены в этот столбец, и имя таблицы (простая строка):

function insert ($param, $table) { $sqlString = "INSERT INTO $table (".implode(', ',array_keys($param)).') VALUES ('.str_repeat('?, ', (count($param) - 1)).'?)'; if ($statement = $this->conn->prepare($sqlString)): $parameters = array_merge(array($this->bindParams($param), $param)); call_user_func_array(array($statement, 'bind_param', $parameters)); if (!$statement->execute()): die('Error! '.$statement->error()); endif; $statement->close(); return true; else: die("Could Not Run Statement"); endif; } 

Моя проблема в том, что $ this-> conn-> prepare (это часть класса, conn – это новый объект mysqli, который работает без каких-либо проблем) возвращает false, но не дает мне причины почему!

Вот пример $ sqlString, который создается для инструкции make:

 INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) 

Может ли кто-нибудь увидеть проблему с этим параметризованным утверждением? По какой-либо причине функция prepare вернет false?

Solutions Collecting From Web of "Mysqli Подготовить заявление – Возвращение ложно, но почему?"

Я копирую решение в этот ответ, так что ему может быть дана надпись, иначе вопрос появится в «неотвеченных вопросах» навсегда. Я отмечаю этот ответ CW, поэтому я не буду получать никаких баллов.

@ Андрю Э. говорит:

Я просто включил mysqli_report(MYSQLI_REPORT_ALL) чтобы лучше понять, что происходит, – оказалось, что одно из моих названий полей было неправильным – вы думаете, что prepare() будет генерировать исключение, но он терпит неудачу.