查询正在运行,但未发送到SQL Server。 我当前的注册脚本。
$link = mysqli_connect("$server", "$user", "$pass", "$webdb");
$username = mysqli_real_escape_string($link, (string) $_POST['username']);
$displayname = mysqli_real_escape_string($link, (string) $_POST['display_name']);
$email = mysqli_real_escape_string($link, (string) $_POST['email']);
$password = sha1((string) $_POST['password']);
$query="INSERT INTO user (`username`, `nicename`, `email`, `password`)
VALUES ('$username', '$displayname', '$email', '$password', '1')";
mysqli_query($link, $query);
mysqli_close($link);
echo $query;
?>
我从查询中收到的输出:
INSERT INTO user (username, nicename, email, password) VALUES ('orion5814', 'Orion5814', 'my@abc.com', '72f2ac484bee398758e769530dd56228d905884d', '1')
我已经检查了所有链接变量,并且只要有正确的信息,它们都已正确设置,所以我不知道从这里可以去哪里。抱歉有这些问题;你可以在doxramos.org查看它,如果你认为它会有所帮助。
答案 0 :(得分:2)
查询存在缺陷。您为4列(username, nicename, email, password)
命名,但列出了5个值('orion5814','Orion5814','my@abc.com','72f2ac484bee398758e769530dd56228d905884d','1')
如果删除最后一个值,查询应该有效。
此外,您可以使用面向对象的mysqli接口来简化代码,如下所示:
$username = $link->real_escape_string($_POST['username']);
和
$link->query($query);
$link->close();
您也不需要将变量显式地转换为字符串,因为如果您的代码需要,它会自动完成。
答案 1 :(得分:2)
正如jordi12100所说,在连接数据库或执行查询时检查错误是很好的做法。
你可以这样做:
$link = mysqli_connect("$server", "$user", "$pass", "$webdb") or die( "Error:" . mysqli_connect_error());
mysqli_query($link, $query) or die ("Error:" . mysqli_error($link));
这可以让你知道你做错了什么。 希望这会有所帮助。
答案 2 :(得分:1)
您的查询中出现错误。 使用mysqli_error();
捕获错误