2014-01-10 184 views
0

我想插入一個出生日期到數據庫只是一個表,但它插入0000-00-00。我有一個表格需要date輸入或<input type="date">。我的插入命令是:插入日期到數據庫

if (($myname = $_GET['your_name']) && ($phone = $_GET['phone']) && 
     ($dob = date('Y-m-d', strtotime($_GET['dob'])))) { 
    $command = "INSERT INTO form_data (id, name, phone, dob) 
       VALUES ('', '".$db->real_escape_string($myname)."', 
       '".$db->real_escape_string($phone)."', '".$db->$dob."')"; 

我的腳本工作除了$dob。如何正確處理HTML5輸入「日期」輸入類型到數據庫中? (當我在這裏嘗試他們的建議時,我搜索了但似乎沒有工作)。

+0

你得到什麼運行時或SQL錯誤? – mario

+0

Duplicate:http://stackoverflow.com/questions/13747254/how-to-interpret-html5-input-date-value-using-php – Windwaker

+0

@ windwaker是的,我試過轉換沒有工作 – mythoslife

回答

1

分配date('Y-m-d', strtotime($_GET['dob'])$dob,但後來你嘗試引用它作爲$db->$dob。你可能希望它這樣來處理它就像其他變量和使用$db->real_escape_string($dob)什麼:

$command = "INSERT INTO form_data (id, name, phone, dob) 
    VALUES ('', '".$db->real_escape_string($myname)."', 
    '".$db->real_escape_string($phone)."', '".$db->real_escape_string($dob)."')"; 

爲了使其更具可讀性,我會用sprintf雖然。

$command = sprintf("INSERT INTO form_data (id, name, phone, dob) VALUES ('', '%s', '%s', '%s')", 
    $db->real_escape_string($myname), 
    $db->real_escape_string($phone), 
    $db->real_escape_string($dob)); 
0

通過在您的VALUES中使用$db->$dob設置您試圖訪問$db的成員,該成員被稱爲$dob設置的任意值。您應該改用$dob

1

我建議格式化你的代碼,以便它更易於閱讀,而不是做內if塊分配。

$myname = $_GET['your_name']; 
$phone = $_GET['phone']; 
$dob = strtotime($_GET['dob']); 

if(!empty($myname) && !empty($phone) && $dob !== false) { 
    $dob = date('Y-m-d', $dob); 


    $stmt = $dbConnection->prepare('INSERT INTO form_data (id, name, phone, dob) VALUES (\'\', ?, ?, ?)'); 
    $stmt->bind_param('s', $myname); 
    $stmt->bind_param('s', $phone); 
    $stmt->bind_param('s', $dob); 

    $stmt->execute(); 

    $result = $stmt->get_result(); 
} 

請注意我如何使用mysqli而不是mysql_。這更安全。