更值得注意的是,为什么我的mysql_query()函数在以下代码段中不起作用?
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$pw = $_POST["password"];
$cpw = $_POST["cpassword"];
if ($name && $email && $pw)
{
mysql_connect("localhost", "root", "") or die("We couldn't connect!");
mysql_select_db("testsite");
mysql_query("INSERT INTO users(name, email, password) VALUES('$name', '$email', '$pw'") or die(mysql_error());
$registered = mysql_affected_rows();
echo "$registered was inserted";
}
else
{
echo "At least one value is empty";
}
mysql_close();
?>
返回的错误是:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近''第1行
包含所有相关文件的目录位于here。所有这些文件都位于xampp / htdocs /下的testsite目录中。我在浏览器中运行form.php之前安装了xampp并运行它。我在运行form.php。
之前创建了“testsite”MySQL数据库和“users”表
但是,当我正确输入所有信息时,mysql_affected_rows()返回-1。这让我觉得数据库没有被正确修改。提前感谢您的反馈。
答案 0 :(得分:3)
更改此
VALUES('$name', '$email', '$pw'")
到
VALUES('$name', '$email', '$pw')"
你错过了一个括号
答案 1 :(得分:2)
您错过了Values
子句末尾的结束括号。
mysql_query("INSERT INTO `users`(`name`, `email`, `password`) VALUES('$name', '$email', '$pw')") or die(mysql_error());
答案 2 :(得分:2)
如果您决定在POST数据中发送单引号或双引号,我还想预先警告您将收到另一个可能的错误。你总是希望尽可能地阻止mysql注入,你可以通过使用下面的代码实现一个伟大的飞跃。
$name = mysql_real_escape_string($_POST["name"]);
$email = mysql_real_escape_string($_POST["email"]);
$pw = mysql_real_escape_string($_POST["password"]);
$cpw = mysql_real_escape_string($_POST["cpassword"]);
请知道,我只是想让你在将来遇到任何令人头疼的事情,而且可能会有一些不太诚意的人。