我有一个 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 的新手,所以如果有更有效的方法来进行用户名查询检查,请告诉我。