2016-10-18 76 views
0

我有一個PHP表單,包含文本字段,多個選項和日期,日期時間,時間字段,我希望在提交表單時將日期,日期時間和時間字段設置爲可選。怎麼做。?只插入數值日期,日期時間,時間字段。 SQL可選日期,時間,日期時間歸檔爲Mysql數據庫

PHP代碼

//擷取變量

$checkout_date_input = $_POST['checkout_date_input']; 
$checkout_time_input = $_POST['checkout_time_input']; 


$arrival_date_time = $_POST['arrival_date_time']; 
$arrival_flightno = $_POST['arrival_flightno']; 
$departure_date_time = $_POST['departure_date_time']; 
$departure_flightno = $_POST['departure_flightno']; 

//插入查詢

$query = mysql_query("insert into reservationform(booking_checkout_date, booking_checkout_time, booking_arrival_date, booking_arrival_flightno, booking_departure_date,booking_departure_flightno) values ('$checkout_date_input', '$checkout_time_input', 
$arrival_flightno,'$departure_date_time',$departure_flightno)"); 
+2

代碼打開SQL注入,mysql_ *已棄用,並在Php7中使用準備好的語句關閉,你可以使用isset()。您的可選列必須允許NULL。 – devpro

+0

你的意思是你希望能夠將任何格式的日期或時間存儲到一個字段中? – Mojtaba

回答

2

解決方案#1

,最好的辦法是檢查用戶輸入了一些東西,如果他們有y的話ou可以傳遞值,如果他們沒有讓變量NULL。

if(!empty(trim($_POST['checkout_date_input']))){ 
    $checkout_date_input = $_POST['checkout_date_input']; 
} else { 
    $checkout_date_input = null; 
} 

解決方案#2

另一件事,你能做的就是指定要插入到數據庫中的列名。

INSERT INTO table (column1, column2) VALUES ('value1','value2')

這個查詢只能值插入列1列2和,其他列將是空的。 如果您設置了多個if語句來檢查字段是否已填充,您可以確定要將值插入哪些列以及哪些列未插入。




這兩種解決方案都基於假設您的數據庫列允許空值,將被插入到數據庫中。

安全

您的代碼是你的數據庫的攻擊非常脆弱。我建議使用PDO並準備好語句以確保數據庫查詢的衛生。 More info can be found here.

+0

還剩下一件事:) – devpro

+0

@devpro那是什麼? – yarwest

+1

已過時的擴展 – devpro