用于将变量插入MySQL的PHP​​查询不起作用

时间:2011-07-23 01:46:54

标签: php mysql

下面的查询不是将变量插入MySQL。我知道函数valid_email2有效,因为我将非电子邮件地址放入$inviteeemail,并根据以下代码重定向。

我知道我有正确的MySQL连接字符串。

知道为什么没有任何东西被放入MySQL?

$invitorname = $_POST['invitorname'];
$inviteename = $_POST['inviteename'];
$inviteeemail = $_POST['inviteeemail'];
$uid = $_POST['uid'];
$subcheck = (isset($_POST['subcheckinvite'])) ? 1 : 0;

if ( ! valid_email2($inviteeemail))
{
    session_write_close();
    header("Location:http://www...com/.../file.php");
    exit;   
}
else
{
    mysql_query("INSERT INTO invites VALUES (NULL, '$uid', '$inviteeemail', '$invitorname', '$inviteename', NULL, '$subcheckinvite', NULL)");
}

3 个答案:

答案 0 :(得分:1)

在您的查询中,您有$subcheckinvite但您在脚本开头将其设置为$subcheck。也许就是这样。

答案 1 :(得分:0)

您为其插入NULL的字段是否为空?

答案 2 :(得分:-1)

检查mysql_query的返回值。如果为false,则查询无效,您可以打印mysql_error()以查看错误消息。

这不是因为您没有逃避任何用户输入这一事实。除了通过仔细制作表单输入允许某人完全更改您的查询之外,如果任何字段包含单引号,您的查询将会失败。

除了修复错误之外,您还应该考虑提高代码质量。

  • 您使用不存在的变量($checksubinvite
  • 您可以将NULL插入列中,而不是简单地指定要插入哪些列
  • 您未验证所有输入
  • 您可以使用单引号围绕可能的数字列
  • 你有大量的空白和不一致的缩进

...等