我是php初学者,我正在尝试使用php进行电子商务。 我正在尝试制作注册表单,我想将这些数据保存到mysql服务器中。 编码看起来没问题,但数据没有存储在mysql服务器中。 你能答应一下吗? php语言是第一次,这是我所挣扎的。请给出一些建议。感谢。
- registerForm.php -
<h4>Create a new account</h4>
<div class="box">
<form action="register.php" method="post">
<p>User ID: <input type="text" name="userId" size="30"/>*</p>
<p>Password: <input type="password" name="password" size="30"/>*</p>
<p>Retype Password: <input type="password" name="repassword" size="30"/>*</p>
<p>First Name: <input type="text" name="firstName" size="30"/>*</p>
<p>Last Name: <input type="text" name="lastName" size="30"/>*</p>
<p>Your Address (*):</p>
<p> <textarea name="address" rows="5" cols="30"></textarea></p>
<p>Phone: <input type="text" name="phone" size="20"/>*</p>
<p>E-mail: <input type="text" name="email" size="21"/>*</p>
<p><input type="submit" value="Create Account"/></p>
</form>
</div>
- register.php -
<?php
require "sql_connection.php";
if(isset($_POST['submit']))
{
if($_GET["userId"]==$_GET["repassword"]){
mysql_query("insert into customer (userId, password, firstName, lastName, address,
phone, email)
values
('$_GET[userId]','$_GET[password]','$_GET[firstName]','$_GET[lastName]','$_GET[address]','$_GET[phone]','$_GET[email]')")
or die(mysql_error());
}
echo "Done!!!!";
}
?>
- sql_connection.php -
<?php
$db_host = "localhost";
$db_username = "root";
$db_pass = "**MY_PASS**";
$db_name = "**MY_DB**";
@mysql_connect("$db_host", "$db_username", "$db_pass", "$db_name") or die("connection is fail.");
@mysql_select_db("$db_name") or die("database does not exsist.");
echo "Successfully connection!!";
?>
答案 0 :(得分:3)
if($_GET["userId"]==$_GET["repassword"])
为什么要将userid与retype pssword字段进行比较?
我认为应该是:
if($_GET["password"]==$_GET["repassword"])
还要确保转义字符串以防止SQL注入攻击。
http://php.net/manual/en/function.mysql-real-escape-string.php
和Paul一样说,要正确检索数据,请使用$ _POST
答案 1 :(得分:3)
很少有事情。您的$_GET
和$_POST
已混淆。并且永远不要公开发布你的db_pass和uername。此外,您使用@
来抑制错误。不要这样做。
即
if($_GET["userId"]==$_GET["repassword"]){
应该是
if($_POST["userId"]==$_POST["repassword"]){
并将所有这些内容更改为$_POST
您的代码:
$_GET[userId]','$_GET[password]','$_GET[firstName]','$_GET[lastName]','$_GET[address]','$_GET[phone]','$_GET[email]')
应该是:
$_POST[userId]','$_POST[password]','$_POST[firstName]','$_POST[lastName]','$_POST[address]','$_POST[phone]','$_POST[email]')"
答案 2 :(得分:3)
由于您定义的表单方法为POST
,因此请在提交后使用$_POST
获取值,而不是$_GET
require "sql_connection.php";
if(isset($_POST['submit']))
{
if($_POST["userId"]==$_POST["repassword"]){
mysql_query("insert into customer (userId, password, firstName, lastName, address,
phone, email)
values
('$_POST[userId]','$_POST[password]','$_POST[firstName]','$_POST[lastName]','$_POST[address]','$_POST[phone]','$_POST[email]')")
or die(mysql_error());
}
echo "Done!!!!";
}
?>
未正确引用值。你应该在插入之前引用。
mysql_query("insert into customer (userId, password, firstName, lastName, address,
phone, email)
values
('".$_POST[userId]."','".$_POST[password]."','".$_POST[firstName]."','".$_POST[lastName]."','".$_POST[address]."','".$_POST[phone]."','".$_POST[email]."')")
答案 3 :(得分:0)
我认为你要做的是:
if($_GET["password"]==$_GET["repassword"]) {