質問

列に挿入される列名と値の連想配列とテーブル名(単純な文字列)に基づいて準備された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()は   例外ですが、静かに失敗します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top