0
    $sql = $db->prepare("INSERT INTO users (user_username, user_password, user_email) VALUES ($username, $password, $email)");
    $sql->bindParam(':user_name', $username);
    $sql->bindParam(':user_password', $password);
    $sql->bindParam(':user_email', $email);
    $sql->execute();

mysql_ を使用するのではなく PDO を学習しようとしていますが、問題が発生しています。これは挿入されていないようで、その理由はわかりません。

エラー メッセージも表示されないので、Google で何を検索すればよいかわかりません。

また、含まれているファイル (すべてのデータベースの詳細を含む config.php) にある $db 変数は問題ですか?

4

2 に答える 2

3

試す -

$sql = $db->prepare("INSERT INTO users (user_username, user_password, user_email) VALUES (:user_name, :user_password, :user_email)");
$sql->bindParam(':user_name', $username);
$sql->bindParam(':user_password', $password);
$sql->bindParam(':user_email', $email);
$sql->execute();

使用しない:user_name, ...でください$db->prepare()$username, ...

于 2013-01-18T03:10:24.477 に答える
1

まず最初に、開発中はエラー レポートをオンにして、エラー メッセージを確認できるようにします。

$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

存在しないパラメーターにバインドしようとしているため、コードを実行すると何らかのエラーが発生するはずです。名前付きパラメーターは or で始まる必要があります。:プレースホルダー型のパラメーターを好む場合は、?代わりに使用できます。あなたがするとき:

...VALUES ($username, $password, $email)"

変数は実際の値に解析されます。

...VALUES (bob, $2y$14$youarehashingpasswordsright, bob@gmail.com)"

もちろん、これは SQL の構文エラーになります。代わりに、パラメーター名を入力する必要があります。

......VALUES ( :username , :password , :email )"

それでもうまくいかない場合は、発生しているエラーを調べて、クエリが実際にコミットされていることを確認してください。

于 2013-01-18T03:28:39.530 に答える