2017-05-08 46 views
1

代碼:如何在php中的單個字段中插入兩個變量值?

<?php 
if(isset($_POST['add_new'])) 
{ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $field = $_POST['field']; 
    $message = $_POST['message']; 

    $comment1 =array($_POST['comment1'],$s_date); 

    $comment2 = $_POST['comment2']; 
    $status = $_POST['status']; 
    $s_date = date('Y-m-d'); 
    $interested_in = $_POST['interested_in']; 
    $academic_details = $_POST['academic_details']; 
    $city = $_POST['city']; 

    $sql = "insert into enquires2(name,email,phone,field,message,comment1,comment2,status,s_date,interested_in,academic_details,city,admin_idd)values('$name','$email','$phone','$field','$message','$comment1','$comment2','$status','$s_date','$interested_in','$academic_details','$city','$admin_id')"; 
    $result = mysqli_query($link,$sql); 
    if($result == true) 
    { 
     $msg .= "<p style='color:green;'>You are successfully add new enquiry</p>"; 
    } 
    else 
    { 
     $msg .= "<p style='color:red;'>Error!</p>"; 
    } 
} 
?> 

在該代碼中,我想在單個可變即

$comment1 = array($_POST['comment1'],$s_date); 

其顯示(數組)當我打印查詢($ SQL)傳遞兩個值。我如何將兩個值傳遞給單個變量?請幫幫我。

+2

您的腳本存在[SQL注入攻擊](https://stackoverflow.com/q/60174/5914775)的風險。看看[Little Bobby Tables]發生了什麼事(http://bobby-tables.com/)。即使[如果你正在逃避投入,它不安全!](https://stackoverflow.com/q/36628418/5914775)。改用[準備好的參數化語句](https://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –

+0

'$ comment1 = $ _POST ['comment1']。「 - 」。$ s_date;' –

+1

'玫瑰紅'); DROP TABLE enquires2;學會消毒,下次你的輸入。對不起,只是爲這篇文章增添些許味道。連接這些字符串是當前腳本的最新問題。 – briosheje

回答

0

只需使用串聯

$comment1 = $_POST['comment1'] . $s_date; 

但是,如果你想以後解析和保持註釋和日期之間的盲分離Blind您可以像使用

$comment1 = $_POST['comment1'] . "--date--" . $s_date; 

任何格式以後,你可以簡單地使用print_r (explode("--date--",$str)); 喜歡的東西多值場。

+0

OP要求做的事實際上是毫無意義和不必要的IMO - 請參閱下面的答案,日期已記錄在表格中。它也很脆弱 - 如果用戶恰好在你的'--date - '加入短語中寫下了一些內容(不知道他們爲什麼會這樣做,但是他們可以),那麼你將會遇到麻煩。 – ADyson

1

另一種選擇,如果你不想來連接,使用序列化功能使關聯數組和序列化和存儲到數據庫

例如:

$comment1 =serialize(array("comment"=>$_POST['comment1'],"date"=>$s_date)); 

,當你拿到表格數據庫,只需使用

$data = unserialize($yourDataFromDb); 

,你會得到你的價值觀像

$data["comment"] // Your comment 
$data["date"] // your date 
-1

您已經在單獨的「日期」字段中記錄$s_date的值,因此不需要在註釋字段中再次記錄它。

如果您希望稍後將它們組合用於顯示或報告目的,則可以使用簡單字符串連接輕鬆地在對象或UI層中執行此操作。我建議你而不是在你試圖存儲數據的時候這樣做 - 否則你只是在行中重複兩次相同的值而沒有明顯的原因,並且使得更難分離用戶實際上是從你插入的日期寫出來的。

+0

(不知道他們爲什麼會,但他們可以),所以你自己承擔很多事情。存儲多值字段是常見的做法,完全取決於您的選擇是否要進行規範化。 – owaishanif786

+0

@ owaishanif786問大多數DBA,他們會告訴你,規範化數據是必不可少的,而不是意見。很多開發人員也會這樣做。但是在這個例子中,數據_is已經被標準化了,因爲日期已經存儲了。因此存儲_again_沒有任何意義。使用UI層來控制何時顯示它(以及是否將它與任何給定視圖中的註釋組合在一起)更靈活,並且更加正常。 DRY原則適用於此。但你當然有權利對自己的情況發表看法:-) – ADyson

+0

@ owaishanif786至於「(不知道他們爲什麼會,但他們可以)」,這不是一個假設,它只是一個事實的陳述這種可能性。我並沒有假設用戶願意這樣做,但我只是認識到這是可能的,所以選擇100%的可靠性。 OTOH你的代碼隱含地假定他們不會。這是_不太可能_但不是_impossible_。如果你給足夠的猴子打字員,其中一個最終會寫莎士比亞。我已經和最終用戶合作了很長時間,知道有人總是會讓你感到驚訝。最簡單的做法是編寫不易受此影響的代碼。 – ADyson

相關問題