在PHP代码中没有报告错误,但没有数据进入数据库

时间:2013-03-10 10:21:38

标签: php mysql forms insert

我有以下简单的表格

简单的形式         

TEST RUN FORM

    <form method=post action='android.php'>
    firstname:<input type='text' name='firstname'/><br>
    secondname:<input type='text' name='secondname'/><br>
    email:<input type='text' name='email'/><br>
    password<input type='text' name='password'/><br>
    <input type=submit name='submit' value='chekiii'/><br>
    </form>
    </body>

php文件是下面的文件,但它不会将任何数据输入数据库并且不会显示错误...实际上它在解析过错误代码后回显了“成功”消息。

<?php
$con = mysql_connect("www.######.com","#####","######");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("android", $con);
if ($_POST[submit])
{
$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
VALUES
('$_POST[firstname]','$_POST[secondname]','$_POST[email]','$_POST[password]')");

if (mysql_query(!$sql,$con))
{
    die('Error: ' . mysql_error());
}
echo "success";
mysql_close($con);}
?>

我可能有什么错误?

4 个答案:

答案 0 :(得分:0)

您是否尝试过回显$ sql查询,然后手动将其添加到数据库中?这可能会给你一个你可以使用的错误。我注意到的一件事是你的$ _POST变量没有引号:即使用$_POST['firstname']代替$_POST[firstname]

哦,请在使用此表单之前在用户输入上添加一些检查...

答案 1 :(得分:0)

这不会起作用

$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
VALUES ('$_POST[firstname]','$_POST[secondname]','$_POST[email]','$_POST[password]')");

使用此

"INSERT INTO magic (firstname,secondname,email,password)
VALUES ('".$_POST['firstname']."','".$_POST['secondname']."','".$_POST['email']."','".$_POST['password']."')"

也改变了这个:

if (mysql_query(!$sql,$con)){
    die('Error: ' . mysql_error());
}

if (!mysql_query($sql,$con)){
    die('Error: ' . mysql_error());
}

您的代码中存在错误

<?php
$con = mysql_connect("www.######.com","#####","######");
if (!$con){
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("android", $con);
if ($_POST['submit']){ //$_POST['submit'] NOT $_POST[submit]
$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
    VALUES ('".$_POST['firstname']."','".$_POST['secondname']."','".$_POST['email']."','".$_POST['password']."')");

if (mysql_query(!$sql,$con)){
    die('Error: ' . mysql_error());
}

echo "success";
mysql_close($con);
}

答案 2 :(得分:0)

您的错误是将$ _POST变量传递到查询字符串中。

首先,您需要在将数据放入查询之前对其进行清理,或者您对SQL注入攻击持开放态度。

其次,修复错误,在$ _POST变量周围添加{},以便可以在双引号字符串中对它们进行求值。您还缺少$ _POST变量中的单引号。

$sql=mysql_query("INSERT INTO magic (firstname,secondname,email,password)
  VALUES
  ('{$_POST['firstname']}','{$_POST['secondname']}','{$_POST['email']}','{$_POST['password']}')");

有关详细说明,请参阅php variables文档。

答案 3 :(得分:0)

问题在于对数据库的引用。由我的主机安装CPANEL我没有意识到有数据库命名前缀,我不知道这是一个菜鸟(仍然是)。感谢大家。还在学习。