Mysqli Prepareステートメント-Falseを返しますが、なぜですか?
-
10-07-2019 - |
質問
列に挿入される列名と値の連想配列とテーブル名(単純な文字列)に基づいて準備された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を返す理由は何ですか?
解決
この回答にソリューションをコピーして、これに賛成票を与えることができます。そうしないと、質問が「未回答の質問」に表示されます。永遠に。この回答にCWをマークしているので、ポイントを獲得できません。
@Andrew E.のコメント:
オンにしました
mysqli_report(MYSQLI_REPORT_ALL)
に 何があったのかをよりよく理解する 進行中- フィールド名が間違っていました-あなたはprepare()
は 例外ですが、静かに失敗します。
所属していません StackOverflow