繁体   English   中英

通过php表单更新SQL表

[英]Update SQL tables through php form

查询正在运行,但是没有发送到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上进行查看。

查询有缺陷。 您命名了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();

您也不需要将变量显式转换为字符串,因为如果您的代码需要自动完成此操作。

正如jordi12100所建议的那样,在连接数据库或执行查询时检查错误是很好的做法。

您可以这样做:

$link = mysqli_connect("$server", "$user", "$pass", "$webdb") or die( "Error:" . mysqli_connect_error());

mysqli_query($link, $query) or die ("Error:" . mysqli_error($link));

这可以使您知道自己做错了什么。 希望这可以帮助。

您的查询中可能出现错误。 使用mysqli_error()捕获错误;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM