php - mySQL不保存数据?

标签 php mysql forms dbase

我有一个用于提交数据的 PHP 联系表单和一封电子邮件...:

<?php 
$dbh=mysql_connect ("localhost", "username", "password") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("guest"); 

if (isset($_POST['submit'])) { 

if (!$_POST['name'] | !$_POST['email']) 
{
echo"<div class='error'>Error<br />Please provide your Name and Email Address so we may properly contact you.</div>";
}
else
{
$age = $_POST['age']; 
$name = $_POST['name'];
$gender = $_POST['gender'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$comments = $_POST['comments'];

$query = "INSERT INTO contact_us (age,name,gender,email,phone,comments)
VALUES ('$age','$name','$gender','$email','$phone','$comments')";

mysql_query($query);

mysql_close();

$yoursite = "Mysite ";
$youremail = $email;

$subject = "Website Guest Contact Us Form";
$message = "$name would like you to contact them 
                            Contact PH:  $phone
Email:  $email
Age: $age
Gender: $gender
Comments:  $comments";

$email2 = "my@email.com";

mail($email2, $subject, $message, "From: $email");

echo"<div class='thankyou'>Thank you for contacting us,<br /> we will respond as soon as we can.</div>";

}
}
?>

电子邮件发送正常,但数据未存储数据库...我是否遗漏了什么? 它与我在另一个联系我们页面上使用的脚本相同,唯一的区别是不是解析同一页面上的数据,我现在将此数据发送到“thankyou.php”页面...我尝试将 $_POST 更改为 $_GET但这杀死了页面...我做错了什么?

最佳答案

首先,您必须对数据进行转义,然后才能将它们注入(inject) SQL 查询中。

这可以使用mysql_real_escape_string来完成 函数,如下所示:

$name = mysql_real_escape_string($_POST['name']);
// ... same for other fields that contain strings
$comments = mysql_real_escape_string($_POST['comments']);


首先,这将确保数据中的引号被转义,并且不会与 SQL 查询中字段数据周围的引号混淆。

其次,这将帮助您防止 SQL Injections .


此外,如果在执行查询期间出现错误,mysql_query将返回 false - 这意味着您应该测试该函数返回的值 - 以可能记录错误的原因:

$result = mysql_query($query);
if ($result === false) {
    // An error has occured...
    echo mysql_error();
}

注意:这里,我只是显示了错误消息 - 但您应该在将应用程序投入生产之前将错误记录在某处(例如,记录到文件中):您的用户不这样做不需要(也不想)看到任何技术错误消息!

关于php - mySQL不保存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428719/

相关文章:

php - Laravel 5.6 : config/logging. php 文件丢失?

PHP & MySQL checked checkbox 问题

c# - 仅在其他机器上的 MySQL 语法错误

jquery - 反馈表单 slider

Javascript - 多表单显示问题

configuration - 为什么 PHP 5.2.14 不显示任何错误(即使是从命令行)?

php - 将 javascript 移至其自己的文件后出现的问题

php - 如何将 css 应用于 codeigniter 分页?

mysql - 如何优化这个数据库操作?

javascript - 更改表单提交的 JS 代码不起作用