0

我无法弄清楚我的 PHP 有什么问题,但 INSERT 函数似乎总是失败。我列出了正确的表行,但可能只是一个简单的语法问题。如果需要该代码,我也可以提供。这是我的 PHP 和数据库结构:

在此处输入图像描述

  <?php  
 $con = mysql_connect('***','***','***');  
    if (!$con)  
{  
    echo "Failed to make connection.";  
    exit;  
}  
$db = mysql_select_db('***');  
if (!$db)  
{  
    echo "Failed to select db.";  
    exit;  
}  
$username   = $_POST['username'];  
$password   = $_POST['password'];  
$name      = $_POST['name'];  
$email      = $_POST['email'];  
$sql        = "SELECT username,email FROM Users WHERE username = '" . $username . "' OR email = '" . $email . "'";  
$query      = mysql_query($sql);  
if (mysql_num_rows($query) > 0)  
{  
    echo "That username or email already exists";  
}  
else  
{  
    $insert = "INSERT INTO Users(username,password,name,email) VALUES ('" . $username . "','" . $password . "','" . $name . "','" . $email . "')";  
    $query  = mysql_query($insert);  
    if ($query)  
    {  
        echo "Thanks for registering. You may now login.";  
    }  
    else  
    {  
        echo "Insert failed";  
    }  
}  
?>  
4

3 回答 3

1

可能是您在用户和“(”之间没有空格。另外,您的表格是否带有大写字母。也许表格有一些前缀?

于 2013-06-19T22:37:45.713 回答
1

如果查询失败,则抛出错误,以便您查看发生了什么。不过,在你上线之前把它拿出来。

$query = mysql_query($insert);
if (!$query) {
    die('Invalid query: ' . mysql_error());
} else {
    echo "Thanks for registering. You may now login.";
}

还有一些针对您的登录表单的建议。使用http://www.php.net/manual/en/function.mysql-real-escape-string.php转义输入到数据库中的内容。我还建议在保存电子邮件之前找到一个好的正则表达式来验证电子邮件。甚至至少对密码进行哈希处理。

于 2013-06-19T22:39:40.070 回答
1

这是未经测试的,但它可能就像这样简单:

$insert = "INSERT INTO Users(username,password,name,email) VALUES ('$username','$password','$name','$email')";
于 2013-06-20T02:19:58.860 回答