2016-04-06 8 views
-2

Ich habe ein HTML-Kontaktformular, in dem der Benutzer schreiben kann, was er will, in das message Eingabefeld. Dieses Formular wird mit AJAX gepostet und im folgenden PHP verarbeitet.`mysql_real_escape_string()` gibt leer MySql Felder

Mein Problem ist, dass ich eine leere Zeile in der Tabelle MySql bekomme.

Ich wundere mich einfach, warum $message = $_POST['message']; den richtigen Wert zurückgibt, wenn $message = mysql_real_escape_string($_POST['message']);leer String zurückgibt !!

Was fehlt mir hier ??

//posted data 
    $firstName = mysql_real_escape_string($_POST['firstName']); 
    $lastName = mysql_real_escape_string($_POST['lastName']); 
    $name  = $firstName. ' ' .$lastName ; 
    $email  = mysql_real_escape_string($_POST['email']); 
    $phone  = mysql_real_escape_string($_POST['phone']); 
    $subject = mysql_real_escape_string($_POST['subject']); 
    $hear  = mysql_real_escape_string($_POST['hear']); 
    $message = mysql_real_escape_string($_POST['message']); 


    $db_server = mysql_connect($db_hostname, $db_username, $db_password) 


    // Check if is Duplicates 
    $query_usercheck = " select * from `test` where Name='$name' and Email='$email' and Phone='$phone' and Subject='$subject' and Message='$message' "; //matching all fields 
    $usercheck = mysql_query($query_usercheck) or die(mysql_error()); 
    $row_usercheck = mysql_fetch_assoc($usercheck); 
    $totalRows_usercheck = mysql_num_rows($usercheck); 

    if ($totalRows_usercheck > 0) { 
     $duplicate = 'Yes'; 
    } else { 
     $duplicate = 'No'; 
     //adding application data to MySql database 
     $add = mysql_query("INSERT INTO `test` (`Date`, `Day`, `Time`, `Name`, `Email`, `Phone`, `Subject`, `From`, `Message`) 
     VALUES ('$date','$day','$time','$name','$email','$phone','$subject','$hear','$message')"); 
    } 

// close mysql 
mysql_close(); 
+2

Beenden Sie die Verwendung der ** veralteten und ab PHP7 entfernten ** mysql_ * -Funktionen. Migrieren Sie zu PDO und verwenden Sie vorbereitete Anweisungen. –

+1

es braucht wahrscheinlich eine Verbindung dafür, es kann passieren und platzieren Sie Ihre Verbindung zuerst. Edit: Ja, ich sagte das ;-) –

+0

Wenn ich '$ message = $ _POST ['message']' alles gut geht und alle Zeichenfolgen in meiner MySql Tabelle sind in – Mazen

Antwort

4

Das Problem ist, dass Sie eine Verbindung zur Datenbank herstellen, nachdem Sie mysql_real_escape_string tun. Bitte verschieben Sie Ihre Verbindung zur Datenbank, bevor Sie Ihre Variablen entfernen.

Noch besser, loswerden der veralteten mysql_* Funktionen (es gibt sogar in PHP7 gegangen)! Verwenden Sie mysqli oder noch besser: Verwenden Sie PDO mit vorbereiteten Anweisungen als auch mysql_real_escape_string is not safe.

2

mysql_real_escape_stringbenötigt eine aktive Datenbankverbindung seine Arbeit zu tun. Sie haben keine Verbindung zum Zeitpunkt des Aufrufs hergestellt.

Verwandte Themen