0

私はPDOに少し慣れていません。データを完全に選択する方法を知っています。私の問題は挿入です。

$Finalize = $pdo->prepare("INSERT INTO `users` VALUES(`id`,:email,:hashedpassword,:firstname,:lastname,:gender,:bdaymonth,:bdayday,:bdayyear,'".time()."',:username)");
$Finalize->bindValue(':email', $email, PDO::PARAM_STR);
$Finalize->bindValue(':hashedpassword', $hashedPassword, PDO::PARAM_STR);
$Finalize->bindValue(':firstname', $first_name, PDO::PARAM_STR);
$Finalize->bindValue(':lastname', $last_name, PDO::PARAM_STR);
$Finalize->bindValue(':gender', $gender, PDO::PARAM_STR);
$Finalize->bindValue(':bdaymonth', $bday_month, PDO::PARAM_STR);
$Finalize->bindValue(':bdayday', $bday_day, PDO::PARAM_STR);
$Finalize->bindValue(':bdayyear', $bday_year, PDO::PARAM_STR);
$Finalize->bindValue(':bdayday', $username, PDO::PARAM_STR);
if($Finalize->execute() == false){ 
    echo '6';
    die;    
}

私は何を間違っていますか?このスクリプトは mysql_query を使用しただけで正常に動作していたので、何が間違っていたのかわかりません。

4

1 に答える 1

1

パラメータに値を2回バインドしていますが、':bdayday'パラメータに値をバインドしていません':username':

$Finalize->bindValue(':bdayday', $bday_day, PDO::PARAM_STR);
// [ deletia ]
$Finalize->bindValue(':bdayday', $username, PDO::PARAM_STR);

デフォルトでは、PDO はエラーが発生したときに警告を出力したり、例外をスローしたりしません。代わりに、各関数の戻り値を手動で調べて、成功したかどうかを確認し、エラーを適切に処理する必要があります。

ただし、このデフォルトの動作は変更できます。

于 2013-01-19T20:42:19.083 に答える