我有一个HTML联系人表单,允许用户在message
输入字段中写他想要的任何内容。此表单使用AJAX发布,并在下面的PHP中进行处理。
我的问题是MySql表中有一个空行。
我只是想知道为什么$message = $_POST['message'];
返回正确的值,而$message = mysql_real_escape_string($_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();
问题是在执行mysql_real_escape_string
之后连接到数据库。请先将连接移动到数据库,然后再转义变量。
更好的是,去掉不推荐使用的mysql_*
函数(PHP7中甚至没有)!使用mysqli甚至更好:将PDO与准备好的语句一起使用,因为即使是mysql_real_escape_string
也不安全。
mysql_real_escape_string
需要一个活动的数据库连接才能完成其工作。您在调用时尚未建立连接。