2017-05-08 2 views
1

Code:Wie zwei Variablenwert in ein einzelnes Feld in PHP einfügen?

<?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>"; 
    } 
} 
?> 

In diesem Code, den ich zwei Wert in einzelne Variable übergeben wollen das heißt

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

die zeigen (Array), wenn ich query ($ sql) drucken. Wie kann ich zwei Werte in einzelne Variable übergeben? Bitte hilf mir.

+2

Ihr Skript läuft Gefahr von [SQL Injection Attack] (https://stackoverflow.com/q/60174/5914775). Schau dir an, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/). Sogar [wenn Sie Eingaben entgehen, ist es nicht sicher!] (Https://stackoverflow.com/q/36628418/5914775). Verwenden Sie stattdessen [vorbereitete parametrisierte Anweisungen] (https://php.net/manual/en/mysqli.quickstart.prepared-statements.php). –

+0

'$ comment1 = $ _POST ['comment1']." - ". $ S_date;' –

+1

'Rosen sind rot '); DROP TABLE enquires2; Lernen Sie zu sanieren, Ihre Eingaben beim nächsten Mal. Entschuldigung, nur um diesem Beitrag etwas Geschmack hinzuzufügen. Das Verketten dieser Zeichenfolgen ist das neueste der Probleme Ihres aktuellen Skripts. – briosheje

Antwort

0

Verwenden Sie einfach Verkettung

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

Aber wenn Sie später analysieren wollen und halten sepration zwischen Kommentar und Datum können Sie ein beliebiges Format wie

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

verwenden Später können Sie einfach print_r (explode("--date--",$str)); Etwas verwenden wie mehrwertiges Feld.

+0

Was OP zu tun ist eigentlich sinnlos und unnötig IMO - siehe meine Antwort unten, das Datum ist bereits in der Tabelle aufgezeichnet. Es ist auch spröde - wenn der Benutzer etwas in den Kommentaren mit Ihrer '--date -' beitretenden Phrase schreibt (weiß nicht, warum sie es tun würden, aber sie _could_), dann haben Sie Probleme, die Zeichenfolge wieder zu trennen . – ADyson

1

Eine weitere Option, wenn Sie es verwenden serialize Funktion ein assoziatives Array machen und serialisiert und Speicher nicht verketten wollen, db

zum Beispiel:

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

und wenn Sie Form db erhalten, verwenden nur

$data = unserialize($yourDataFromDb); 

und Sie erhalten Ihre Werte wie

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

Sie haben den Wert $s_date bereits in einem separaten Feld "date" aufgezeichnet, so dass Sie ihn nicht erneut im Kommentarfeld aufzeichnen müssen.

Wenn Sie diese später für Anzeige- oder Berichtszwecke kombinieren möchten, können Sie dies einfach in der Objekt- oder UI-Ebene mithilfe einer einfachen String-Verkettung durchführen. Ich würde Ihnen nicht empfehlen, dies zu tun, wenn Sie die Daten speichern, wie Sie versuchen - andernfalls duplizieren Sie einfach den gleichen Wert zweimal in der Reihe ohne ersichtlichen Grund, sowie es schwieriger zu machen, was der Benutzer trennt schrieb tatsächlich von dem Datum an, an dem du es eingefügt hast.

+0

(Ich weiß nicht, warum sie es tun würden, aber sie könnten es), also nehmen Sie selbst viele Dinge an. Das Speichern von mehrwertigen Feldern ist gängige Praxis und hängt ganz von Ihrer Wahl ab, ob Sie normalisieren wollen oder nicht. – owaishanif786

+0

@ owaishanif786 Fragen Sie die meisten Datenbankadministratoren und sie würden Ihnen sagen, dass eine Normalisierung der Daten wesentlich ist und nicht eine Frage der Meinung.Viele Entwickler würden auch. In diesem Beispiel sind die Daten jedoch bereits normalisiert, da das Datum bereits gespeichert ist. Daher hat das Speichern _again_ keinen Zweck. Die Verwendung der UI-Ebene, um zu steuern, wann sie angezeigt werden soll (und ob sie mit dem Kommentar in einer bestimmten Ansicht kombiniert werden soll) ist flexibler und auch eher normalisierbar. Das DRY-Prinzip gilt dafür. Aber Sie haben natürlich Anspruch auf Ihre eigene Sicht auf die Situation :-) – ADyson

+0

@ owaishanif786 für "(weiß nicht, warum sie würden, aber sie könnten)", das ist keine Annahme, es ist nur eine Aussage über die Tatsache diese Möglichkeit. Ich nehme nicht an, dass der Benutzer es tun wird, aber ich wähle einfach 100% ige Zuverlässigkeit, indem ich erkenne, dass es möglich ist. OTOH Ihr Code geht implizit davon aus, dass dies nicht der Fall ist. Es ist _unlikely_ aber nicht _impossible_. Wenn Sie genug Affen Typerwriter geben, wird einer von ihnen schließlich Shakespeare schreiben. Ich habe lange genug mit Endbenutzern zusammengearbeitet, um zu wissen, dass dich jemand immer überraschen wird. Am einfachsten ist es, Code zu schreiben, der dafür nicht anfällig ist. – ADyson

Verwandte Themen