我正在创建一个基于Web的应用程序,我正在使用PDO作为我的数据库。我有一个查询,可以从登录表中选择password=something
和$query = $db->prepare("SELECT * FROM login WHERE username=:username AND password=:password");
$query->bindParam(':username',$username);
$query->bindParam(':password',$password);
$query->execute();
。
我的代码:
$query = mysql_query("SELECT * FROM login WHERE username='$username' AND password='$password' ");
if($query == false){
die(mysql_error());
}
但是我想检查查询是返回true还是false。例如在mysql中我们常说:
mysql_error()
我的问题是,如何使用PDO检查查询是返回false还是true并给出错误?这将有助于我在开发过程中获取代码错误。
我打算将CREATE TABLE USERS
( USERID VARCHAR2(100 CHAR) PRIMARY KEY
);
INSERT INTO USERS
(SELECT 'AVROY'||LEVEL FROM DUAL CONNECT BY LEVEL < 10
);
COMMIT;
CREATE TABLE logs_UID
(
log_dtl VARCHAR2(200 CHAR),
UserID VARCHAR2(100 CHAR)
);
INSERT INTO logs_UID
SELECT 'test avroy'||level,NULL FROM dual CONNECT BY level < 10 ;
COMMIT;
MERGE INTO LOGS_UID lu USING USERS u
ON (UPPER(u.userid) = UPPER(SUBSTR(LU.LOG_DTL,INSTR(UPPER(lu.LOG_DTL),UPPER(u.userid),1),LENGTH(lu.log_dtl)-INSTR(UPPER(lu.LOG_DTL),UPPER(u.userid),1)+1)))
WHEN MATCHED THEN
UPDATE SET lu.USERID = u.USERID;
COMMIT;
替换为什么?
答案 0 :(得分:1)
我们在异常模式下设置PDO。
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
我们用try / catch块包装查询。如果抛出异常,我们就会抓住它。这相当于使用if(!mysql_query($query)) echo mysql_error();
你的例子是
try
{
$query = $db->prepare("SELECT * FROM login WHERE username=:username AND password=:password");
$query->bindParam(':username',$username);
$query->bindParam(':password',$password);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $e)
{
echo "Whoopsie, an error occurred! Message: ". $e->getMessage();
}