为什么MySQL查询调用不成功?

时间:2012-05-04 02:33:45

标签: php mysql

更值得注意的是,为什么我的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”表

The database and table exist.

但是,当我正确输入所有信息时,mysql_affected_rows()返回-1。这让我觉得数据库没有被正确修改。提前感谢您的反馈。

3 个答案:

答案 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"]);

请知道,我只是想让你在将来遇到任何令人头疼的事情,而且可能会有一些不太诚意的人。