0
嗨我試圖確保當用戶登錄到網站,他們是一個用戶。使用MYSQL很容易,但我必須使用PDO,並且我正在努力研究如何讓它拋出錯誤消息並且不讓用戶登錄。PDO SELECT錯誤處理
我已經在下面包含了PHP select語句。
$sql = "SELECT C.cid,C.first_name,C.sirname, S.sid
FROM CUSTOMER as C,
STAFF as S
WHERE C.email_address='".$email_address."'
AND C.password='".$password."'
AND S.CUSTOMER_CID=C.cid";
$runsql = static::db();
$runsql->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
//self::get()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
foreach ($runsql->query($sql) as $row) {
/*if ($result = $runsql->prepare("SELECT C.cid,C.first_name,C.sirname, S.sid FROM CUSTOMER as C, STAFF as S WHERE C.email_address='".$email_address."' AND C.password='".$password."' AND S.CUSTOMER_CID =C.cid")) {
*/
//print_r($runsql);
//Check to make sure the user is on the staff list.
$_SESSION['customer_id'] = $row->cid;
$_SESSION['first_name'] = $row->first_name;
$_SESSION['last_name'] = $row->sirname;
$_SESSION['sid'] = $row->sid;
$_SESSION['logged_in'] = true;
}
} catch(PDOException $e) {
/* If PDO fails we handle it here */
echo "Your query failed: " . $e->getMessage();
}
移動到PDO並保留使用'mysql_'時所遇到的所有SQL注入問題並沒有多大意義。查看準備好的語句和參數化變量 – RiggsFolly
SELECT'查詢不匹配任何行**不是錯誤**因此不會有任何異常。您只需獲得零個結果行。這應該與你使用'mysql'的方式沒有什麼不同...... – deceze
在循環中設置標量變量也沒有意義,你只能看到來自你的最後一行的'$ _SESSION'變量中的值查詢結果集。 **這實際上是這裏的問題????? ** _如果您使用**所謂的更簡單的mysql **,那麼也會應用** _ – RiggsFolly