我对PHP很新,我试图将用户的输入保存到mysql数据库中。我按照在线教程了解如何操作,但每次输入用户信息时,网站都会告诉我它失败了。我唯一能想到的就是主机名(我从phpadmin复制并粘贴)。如果出现问题,请告诉我。
contact.html
<section id="mid_section">
<div id="boxes">
<h1>
Leave your information here for a quick reponse:
</h1>
<br/>
<form id="myform" action="userinfo.php" method="post">
Name:<input type="text" value="name">
Email:<input type="email" value="email">
Phone:<input type= "tel" value="phone(opt)">
<button id="sub">Submit</button>
</form>
db.php中
<?php
$conn = mysql_connect('custsql.eigbox.net','username','password');
$db= mysql_select_db('visitors');
?>
userinfo.php
<?php
include_once('db.php');
$name =$_POST['name'];
$email =$_POST['email'];
$phone =$_POST['phone'];
if(mysql_query("INSERT INTO users (name,email,phone) VALUES ('$name','$email','$phone')"))
echo"successfully inserted";
else
echo "failed";
?>
myscript.js
$("#sub").click(function(){
$.post($("#myform").attr("action"), $("#myform:input").serializeArray(), function(info){$("#result").html(info);});
});
$("#myform").submit(function(){
return false;
});
答案 0 :(得分:4)
因为你可能是php的新手,一方面可以很好地学习教程, 然而选择正确的来源可能是一个经常发生的灾难性问题。
当您使用mysql_select_db
和mysql_query
等函数时,它基本上意味着您使用的是不推荐使用的mysql样式。
如果你去官方的php文档并搜索mysql方法,它会告诉你它的弃用。
这里的问题不是你与数据库交互的方式,你的编码风格仍然有效,许多人仍然这样做。
我只是告诉你,作为一个新手,人们倾向于支持mysqli和PDO而不是mysql_
功能。将他们视为未来的朋友。
你的问题怎么样,我相信一切都没问题,除了你的mysql_query函数看起来很奇怪。 尝试使用以下代码而不是查询语句
if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".$name."','".$email."','".$phone."')"))
或出于安全原因甚至更好
if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".mysql_real_escape_string($name)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($phone)."')"))
如果不是这种情况并且您仍然收到“失败”错误声明,则需要进行一些调试,此处的人员可以帮助您
因此,您需要使用以下内容而不是现在的内容
if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".mysql_real_escape_string($name)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($phone)."')")) {
echo 'Success!'
} else {
echo mysql_error();
exit;
}
让我们看看会发生什么
答案 1 :(得分:1)
首先,在表单的每个属性上使用name。因此,contact.html将是
<form id="myform" action="userinfo.php" method="post">
Name:<input type="text" value="name" name='name'>
Email:<input type="email" value="email" name='email'>
Phone:<input type= "tel" value="phone(opt)" name='phone'>
<button id="sub">Submit</button>
</form>
使用mysqli_ *而不是mysql_ *,因为它已被弃用。您也可以使用PDO。更多关于mysqli_*
在将数据插入数据库之前过滤数据。所以,userinfo.php看起来像
include_once('db.php');
$name = mysqli_real_escape_string($db, $_POST['name']);
$email = mysqli_real_escape_string($db,$_POST['email']);
$phone = mysqli_real_escape_string($db,$_POST['phone']);
if (mysql_query("INSERT INTO `users` (`name`, `email`, `phone`) VALUES ('".$name."','".$email."','".$phone."')"))
echo"successfully inserted";
else
echo "failed";