我无法弄清楚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";
}
}
?>
答案 0 :(得分:1)
可能是因为用户和“(”之间没有空格。 还有,你的桌子是大写字母。 也许这张桌子有一些前缀?
答案 1 :(得分: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将您输入的内容转移到数据库中。我还建议您在保存之前找到一个好的正则表达式来验证电子邮件。甚至可以至少对密码进行哈希处理。
答案 2 :(得分:1)
这是未经测试但可能就像这样简单:
$insert = "INSERT INTO Users(username,password,name,email) VALUES ('$username','$password','$name','$email')";