MySQL查询出错

时间:2011-01-09 02:39:17

标签: php mysql

好吧,我一定是个白痴,因为这是我今天的第三个问题。 这是我的代码:

date_default_timezone_set("America/Los_Angeles");

include("mainmenu.php");

$con = mysql_connect("localhost", "root", "********");
 if(!$con){
  die(mysql_error());
}

$usrname = $_POST['usrname'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$password = $_POST['password'];
$email = $_POST['email'];

mysql_select_db("`users`, $con) or die(mysql_error()");

$query = ("INSERT INTO `users`.`data` (`id`, `usrname`, `fname`, `lname`, `email`, `password`) 
VALUES (NULL, '$usrname', '$fname', '$lname', '$email', 'password'))");

mysql_query('$query') or die(mysql_error());

mysql_close($con);

echo("Thank you for registering!");

我总是将错误返回为:“您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行的”$ query“附近使用正确的语法。 帮助新手。我准备刺伤我的显示器。

4 个答案:

答案 0 :(得分:4)

1)在这一行:

mysql_select_db("`users`, $con) or die(mysql_error()");

应该是:

mysql_select_db("users", $con) or die(mysql_error());

现在您在要发送的字符串中有PHP代码作为数据库名称。

2)在这一行:

mysql_query('$query');

通过使用单引号,将发送文字字符串$query而不是名为$query的变量的内容。使用mysql_query($query)mysql_query("$query");

此外,在您创建$query的位置以及echo成功消息的位置,字符串周围的括号是不必要的。

WITHIN $query,你有太多的结束括号。你也无法逃避任何输入,所以如果有人在你的表单中写出令人讨厌的东西(比如任何带有单引号字符的东西),它就会破坏你的查询。

答案 1 :(得分:2)

mysql_query($query) or die(mysql_error());

$ query变量周围没有引号。

单引号(')不允许嵌入变量,而双引号(“)则允许嵌入变量。

答案 2 :(得分:1)

mysql_query('$ query')=>的mysql_query( “$查询”)

答案 3 :(得分:1)

如何修复SQL注入漏洞

更改此代码

enter image description here 编码恐怖

$usrname = $_POST['usrname'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$password = $_POST['password'];
$email = $_POST['email'];

进入这个

$usrname = mysql_real_escape_string($_POST['usrname']);
$fname = mysql_real_escape_string($_POST['fname']);
$lname = mysql_real_escape_string($_POST['lname']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);