1

我有以下简单的形式

简单的模式

试运行表

    <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

5 回答 5

0

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

于 2013-10-03T11:16:43.377 回答
0

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

哦,请在使用此表单之前对用户输入进行一些检查...

于 2013-03-10T10:25:05.843 回答
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);
}
于 2013-03-10T10:25:41.217 回答
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变量文档以获取更多说明。

于 2013-03-10T10:26:52.657 回答
0

请不要使用已弃用的代码:

$con = mysqli_connect(..... );
mysqli_select_db(...);
mysqli_query($con,...); 
and to every $_POST mysqli_real_escape_string($con,....);
于 2013-03-10T10:28:24.630 回答