2011-03-21 109 views
0

我正在使用html <select><option>窗體來收集用戶的數據。但是,當我試圖將出生日期保存到數據庫時,我陷入了困境。 這裏就是我想要做:php插入mysql的出生日期

$dob = $_POST['year'] . '-' . $_POST['month'] . '-' .$_POST['day']; 

$insertInto = " INSERT INTO `users`.`information` (id, useremail, password, firstname, lastname, gender, dob, telephone) 
VALUES (NULL, '$_POST[email]','$_POST[password]','$_POST[firstname]','$_POST[lastname]','$_POST[formGender]','$dob', '$_POST[telephone]')"; 

它適用於一切,但$dob,可能有人指導我發現這個錯誤嗎?

非常感謝。

+1

你永遠不應該通過用戶的字符串直接到PHP。如果用戶輸入像NULL這樣的電子郵件會怎麼樣; DROP TABLE用戶; --'?使用mysql_real_escape_string始終避免用戶輸入。 – ChrisJ 2011-03-21 21:29:28

+0

我會檢查ISSET,然後進行驗證,我只是沒有在那個點上。感謝您的提示:) – Karl 2011-03-21 21:32:54

+0

這不是一個真正的現實載體ChrisJ,我碰巧與其分享名字/最後一個字母。我會反而做類似於:'email =',firstname = SELECT password FROM users.information where useremail='[email protected]','','','','')' – Chris 2011-03-21 21:35:59

回答

0

首先在執行查詢調用之前檢查$ dob的值。然後,如果它看起來很好(例如1984-10-10),那麼讓你的dob是日期/日期時間。

現在,你得到了什麼錯誤?它被設置爲全0還是什麼?

注意:您將被暴露給SQL注入。我總是推薦使用PDO和幾乎任何SQL查詢的準備語句。 http://mx.php.net/manual/en/pdo.prepare.php

+0

我開始了所有O's 。謝謝,我要去試試:) – Karl 2011-03-21 21:36:21

+0

我得到了0000-00-00。我試圖回顯我的$ dob varialbe它的回顯權限,但是當我在phpmyadmin中看到那裏是0000-00-00。在回聲中我得到了1997-06-12 – 2015-11-06 07:21:33

2

如果你不介意使用unix的時代,你可以簡單地把你的用戶輸入並做一個簡單的strtotime()。它會給你更多的靈活性,以及​​如何使用date()函數顯示它。

$dob = "1/1/1985"; 
$string = strtotime($dob); 

然後吐出來:

$data = pull epoch result from database 
$birthday = date("m/d/Y", $data);