2013-07-17 117 views
0

我正在使用PHP和PDO選擇使用電子郵件地址

嘗試使用電子郵件作爲關鍵字從表中檢索記錄。當電子郵件在SQL語句中直接給出,它工作正常,

但是,當我在現場「$ bio_email」發送電子郵件,這是行不通的。從表中的電子郵件字段的類型是「VARCHAR」

我嘗試了好幾種方案,但沒有一個工作。該系統將返回該錯誤是在SQL語句中

的右手邊,這是我的代碼

$bio_email  = $applicantinfo->user_email; // email from a table 
$sql = "SELECT * FROM tb_files_upload WHERE "; 
$sql .= " email = '[email protected]' "; // THIS WORKS FINE 
//$sql .= " email = '[email protected]' "; // THIS WORKS FINE 
//$sql .= " email = $bio_email "; // DOES NOT WORK ... syntax to use near '@live.ca' at line 1 
//$sql .= " email = {$bio_email} "; // DOES NOT WORK ... syntax to use near '@live.ca' at line 1 
//$sql .= " email = '{$bio_email}' "; // DOES NOT WORK ... syntax to use near ''[email protected]'' at line 1 
//$sql .= " email = '$bio_email' "; // DOES NOT WORK ... syntax to use near ''[email protected]'' at line 1 

$biosketchs = Tb_Files_Upload::find_by_sql($sql); 

而且在同一個表我有一個字段「dateReceived」。我想擁有2.5歲的紀錄。你能幫我解決這個問題嗎?

回答

3

我會嘗試

$sql .= " email = '$bio_email' "; 

爲dateReceived,只是DATE_SUB爲一個月,和一年內。

dateReceived >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 6 MONTH), INTERVAL 2 YEAR) 

還是讓我們不要愚蠢和使用18個月直接

$sql.= " AND dateReceived >= DATE_SUB(CURDATE(), INTERVAL 18 MONTH)"; 
+0

謝謝,這工作正常的電子郵件。對於日期範圍我嘗試這樣做:$ SQL =「dateReceived> = DATE_SUB(CURDATE(),間隔2年」;但它選擇的一切,我需要從以前的2.5年 – Danilo

+0

選擇記錄除了明顯$ bio_email應該逃脫。 ... – euantorano

+0

@Danilo遺憾,錯過了dateReceived一部分。編輯。 –

相關問題