0

新しいユーザーをデータベースに挿入する機能があります。入力がやや悪いか、ユーザー名または電子メールが既に存在する場合は、false を返します。

これは次のようになります。

public function input( $username, $password, $email ){
    if( $stmt = $this->mysqli->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)" )){

        $stmt->bind_param('sss', $username, $password, $email);
        $stmt->execute();
        $stmt->close();
        $this->mysqli->close();

        return true;
    }
    else{
        return false;
    }
}

複製を作成しようとするまでは完全に正常に動作し、true を返しますが、データベース内のテーブルデータには影響しません。

4

2 に答える 2

2
return !!$this->mysqli->insert_id; // instead of true
于 2012-08-26T17:03:37.647 に答える
0

あなたの関数は、prepare失敗した場合にのみ false を返します。それ以降はデータを追加していません。

挿入ステートメントの戻り値をチェックして、これが実際に何を返しているかを確認し、INSERT が成功したかどうかを確認できます。

また、質問のタイトルとタグは mysqli を使用していることを示していますが、関数呼び出しは両方ともmysql_*- どちらかがタイプミスですか?

于 2012-08-26T17:06:14.867 に答える