列名とその列に挿入される値の連想配列とテーブル名 (単純な文字列) に基づいて、準備された 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 を返しますが、その理由はわかりません!
以下は、prepare ステートメント用に作成される $sqlString のサンプルです。
INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
このパラメータ化されたステートメントに問題がある人はいますか? prepare 関数が false を返す理由はありますか?