2016-04-06 14 views
-2

私はmessage入力フィールドにユーザが望むものを書くことを許可されたHTMLの連絡フォームを持っています。このフォームはAJAXを使用して掲載されており、以下のPHPで処理されています。`mysql_real_escape_string()`が空のMySqlフィールドを返します

私の問題は、私はMySqlテーブルで空の行を取得することです。

$message = mysql_real_escape_string($_POST['message']);の空文字列を返したときに、なぜ$message = $_POST['message'];が適切な値を返すのかが不思議です。

私はここで何が欠けていますか?

//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

** deprecatedを使用して停止し、PHP7の削除** mysql_ *機能を使用します。 PDOに移行し、Prepared Statementの使用を開始します。 –

+1

おそらくそれのための接続が必要です、それは起こり、あなたの接続を先に置くことができます。編集:うん、私は言った;-) –

+0

私は '$メッセージ= $ _POST ['メッセージ']'を使用してすべてがうまくいって、私のMySqlテーブルのすべての文字列が記入されて – Mazen

答えて

4

mysql_real_escape_stringを実行した後、データベースに接続するのが問題です。変数をエスケープする前に、接続をデータベースに移動してください。

さらに、廃止予定のmysql_*機能を取り除くこともできます(PHP7にもあります)。 mysqliまたはそれ以上のものを使用してください。PDOを用意して準備文をmysql_real_escape_string is not safeとしてください。

2

mysql_real_escape_stringそのジョブを実行するためにアクティブなデータベース接続が必要です。あなたはそれを呼び出した時点で接続を確立していません。

関連する問題