0
//Successful connection to $db

function insert_users($db, $username, $password, $email)
{
    echo "FUNCTION CALLED"; //This is outputted successfully

    $query = "INSERT INTO `users` (`id`, `username`, `password`, `email`) VALUES ('', ?, ?, ?)";
    $stmt = mysqli_stmt_init($db);

    if(mysqli_stmt_prepare($stmt, $query))
    {
        echo "QUERY PREPARED"; // rest of code was snipped (will put up upon request)
    } else {
        echo "QUERY DENIED"; //This is outputted successfully
    }
}


//The $user $pass and $mail are defined and then the function is called

insert_users($db, $user, $pass, $mail);

データベース構造:

testdb (database)
    -> users (table)
        -> id            //Primary key, unique key
        -> username      //unique key
        -> password
        -> email

クエリが操作を実行しないのはなぜですか? 「クエリが準備されました」ではなく「クエリが拒否されました」と表示されます。クエリは無効だと思います。さらに情報が必要な場合は、この質問を編集してください

編集

追加した

mysqli_stmt_error($stmt);echo "QUERY DENIED"; 何も起こらなかった後...

編集2

$server = 'localhost';
$user = 'root';
$password = '';
$databse = 'testdb';

$db = @mysqli_connect($server, $user, $password, $database) or die("Could not connect to Database server. Please inform an administrator");

それが私のデータベース設定です。変数を引用符で囲みますか?

4

2 に答える 2

2

auto_increment 列の場合idは、挿入から削除できます

INSERT INTO `users` (`username`, `password`, `email`) VALUES (?, ?, ?)

にタイプミスがあり$databse = 'testdb';ます。に名前を変更し$databaseます。

于 2012-12-27T23:57:37.120 に答える
2

主キーとして常に空の文字列を入力しようとしているからだと思います(id)。そのフィールドが自動インクリメント フィールドである場合は、値を設定しようとしてもいけません。

$query = "INSERT INTO `users` (`username`, `password`, `email`) VALUES (?, ?, ?)";
于 2012-12-27T23:58:06.033 に答える