次の内容を含む db.php ファイルがあります。
// db.php file
// creates connection to database
// DATABASE CONNECTION FUNCTION
function sql_con(){
try{
$dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
// log error to file and display friendly error to user
ExceptionErrorHandler($e);
exit;
}
}
サインアップページがあり、ユーザー名が既に存在するかどうかを確認したいので、sql_con();
事前に関数を呼び出してデータベースに接続し、以下のクエリを実行します
// connect to database
sql_con();
$stmt = $dbh->prepare("SELECT `user_login` FROM `users` WHERE `user_login` = ? LIMIT 1");
$stmt->execute(array($username));
if ( $stmt->rowCount() > 0 ) {
$error[] = 'Username already taken';
}
私はPDOに非常に慣れていないので、上記で次のエラーが発生します:
注意: 未定義の変数: 64 行目の C:\wamp\www\signup.php の dbh
致命的なエラー: 64 行目の C:\wamp\www\signup.php の非オブジェクトに対するメンバー関数 prepare() の呼び出し
おそらく非常にばかげたものであり、私は初心者の段階にあるため、PDO と混同しているようです。誰かが私が間違っていることを教えてもらえますか? また、私は PDO を初めて使用するため、これが正しい方法であるかどうかもわかりません。ユーザー名のクエリ チェックを行うためのより効率的な方法があれば、お知らせください。