2012-03-18 73 views
0

我即時遇到問題,我無法從數據庫中檢索數據。

這工作得很好

$user_date = ISSET($_POST['input_date']); 

$query1=mysql_query("SELECT START_TIME,END_TIME FROM dummy where MDATE='2012-03-18'") 

但這並不。唯一的變化是我用過$ user_date

$user_date = ISSET($_POST['input_date']); 

$query1=mysql_query("SELECT START_TIME,END_TIME FROM dummy where MDATE='$user_date'") 
+5

小心閱讀'isset()'函數做什麼?在使用之前閱讀手冊中的功能描述總是一個好主意。 – 2012-03-18 12:08:10

回答

3

isset()返回一個布爾值,如果變量已定,變量本身沒有價值。你需要像這樣的東西:

$user_date = isset($_POST['input_date']) ? mysql_real_escape_string($_POST['input_date']) : ''; 

以上是三元操作。如果輸入值已被設置,它將被轉義並存儲到$user_date中。否則,返回一個空字符串。您需要決定在未設置時採取什麼操作,:之後的部分。例如,你可以返回一個默認的日期改爲:

$user_date = isset($_POST['input_date']) ? mysql_real_escape_string($_POST['input_date']) : '2012-03-18'; 
+0

+1。快速的打字技巧。 :)修復錯別字,一切都很好。 – Shef 2012-03-18 12:10:14

+0

@Shef已經修復。 – 2012-03-18 12:11:45

+0

那裏,現在它是固定的。 :) – Shef 2012-03-18 12:12:43

-2

這是正常的,

$user_date = ISSET($_POST['input_date']); 

isset retun布爾,

使用以下

if (ISSET($_POST['input_date'])) 
$user_date = $_POST['input_date']; 
$query1=mysql_query("SELECT START_TIME,END_TIME FROM dummy where MDATE='$user_date'") 

之上你應該使用mysql_reapl_escape_string函數或類似的函數來避免sql注入。

希望它有幫助!

+0

爲什麼不添加mysql_reapl_escape_string函數或類似的代碼而不是僅僅提及它呢? – 2012-03-18 12:11:58

+0

,因爲我沒有每秒輸入12個單詞... - > 3分鐘前的帖子波紋管 – Dax 2012-03-18 12:13:04