INSERT PHP语句不起作用

时间:2012-03-01 20:27:53

标签: php mysql

所以,我不确定问题是什么,但是,当我尝试插入表格时,它不起作用。

所有变量都有效。我已经回应并测试了他们,他们正在努力。

$username = $_SESSION['username'];
$update = $_GET['update'];
mysql_query("INSERT INTO updates (username, update) VALUES ('$username', '$update')");

所以我的mySQL查询一定是个问题。这个mySQL查询是.php文件夹中的两个之一。如果这有任何区别。

4 个答案:

答案 0 :(得分:4)

SQL

中的错误

您的SQL中存在错误。如果不引用它们,则不能在列名中使用MySQL关键字。

在这种情况下,update需要用反引号括起来:

$query = "INSERT INTO updates (`username`, `update`) 
                       VALUES ('$username', '$update')";

SQL注入

您的代码容易受到SQL注入攻击。您应该使用mysql_real_escape_string()转义放在带有$username = mysql_real_escape_string($_SESSION['username']); $update = mysql_real_escape_string($_GET['update']); 的SQL语句中的带引号的字符串,或者使用PHP PDO预处理语句绑定数据。

$username = mysql_real_escape_string($_SESSION['username']);
$update = mysql_real_escape_string($_GET['update']);
$query = "INSERT INTO updates (`username`, `update`) 
                       VALUES ('$username', '$update')";

把它放在一起

{{1}}

我已经为你写了一些小的SQLFiddle,所以你可以看到这个:http://sqlfiddle.com/#!2/c25b1/1

答案 1 :(得分:1)

您需要转义要插入的数据。您还希望将字符串与变量分开。 尝试这样的事情:

$username = mysql_real_escape_string($_SESSION['username']);
$update = mysql_real_escape_string($_GET['update']);
mysql_query("INSERT INTO `updates` (username, update) VALUES ('" . $username . "', '" . $update . "')") or die(mysql_error());

这是未经测试但应该有效。

答案 2 :(得分:0)

mysql_error()是最好的方法,但您也可以回显查询并直接针对数据库运行它以查看问题所在。

$username = $_SESSION['username'];
$update = $_GET['update'];
$query = "INSERT INTO updates (username, update) VALUES ('$username', '$update')";
mysql_query($query);

echo "My Query : $query";

答案 3 :(得分:0)

试试这个:

$username = $_SESSION['username'];
$update = $_GET['update'];
mysql_query("INSERT INTO updates (username, update) VALUES ('+$username', '+$update')");

也更好的是创建一个变量来放置查询字符串,然后进行查询