Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入PHP语句无效_Php_Mysql - Fatal编程技术网

插入PHP语句无效

插入PHP语句无效,php,mysql,Php,Mysql,所以,我不确定问题出在哪里,但是,当我尝试插入到表中时,它不起作用 所有变量都在工作。我已经回应并测试了它们,它们正在工作 $username = $_SESSION['username']; $update = $_GET['update']; mysql_query("INSERT INTO updates (username, update) VALUES ('$username', '$update')"); 所以我的mySQL查询一定有问题。此mySQL查询是.php文件夹中的两个查

所以,我不确定问题出在哪里,但是,当我尝试插入到表中时,它不起作用

所有变量都在工作。我已经回应并测试了它们,它们正在工作

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

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

您需要转义要插入的数据。您还需要将字符串与变量分开。 试着这样做:

$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());

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

您需要转义即将插入的数据。您还需要将字符串与变量分开。 试着这样做:

$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());

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

mysql\u错误是最好的方法,但您也可以回显您的查询,并直接对数据库运行查询,以查看问题所在

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

echo "My Query : $query";

mysql_错误是最好的方法,但是您也可以回显您的查询并直接对数据库运行它,以查看问题所在

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

echo "My Query : $query";
SQL中的错误 您的SQL中有一个错误。您不能在列名中使用MySQL关键字而不引用它们

在这种情况下,更新需要包含在背景标记中:

$query = "INSERT INTO updates (`username`, `update`) 
                       VALUES ('$username', '$update')";
SQL注入 您的代码容易受到SQL注入攻击。您应该使用mysql_real_escape_string转义放在SQL语句中的带引号的字符串,或者使用PHP PDO准备的语句绑定数据

$username = mysql_real_escape_string($_SESSION['username']);
$update = mysql_real_escape_string($_GET['update']);
把它放在一起 我已经为您编写了小SQLFIDLE,以便您可以在操作中看到这一点:

SQL中的错误 您的SQL中有一个错误。您不能在列名中使用MySQL关键字而不引用它们

在这种情况下,更新需要包含在背景标记中:

$query = "INSERT INTO updates (`username`, `update`) 
                       VALUES ('$username', '$update')";
SQL注入 您的代码容易受到SQL注入攻击。您应该使用mysql_real_escape_string转义放在SQL语句中的带引号的字符串,或者使用PHP PDO准备的语句绑定数据

$username = mysql_real_escape_string($_SESSION['username']);
$update = mysql_real_escape_string($_GET['update']);
把它放在一起 我已经为您编写了小SQLFiddle,这样您就可以看到它的实际作用:

试试这个:

$username = $_SESSION['username'];
$update = $_GET['update'];
mysql_query("INSERT INTO updates (username, update) VALUES ('+$username', '+$update')");
另一个更好的方法是创建一个变量来放置查询字符串,然后进行查询

尝试以下操作:

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


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

1。错误2。google for sql注入变量包含什么?可能是因为您在其中有未替换的撇号吗?没有错误,它不会更新数据库。数据库有id、用户名、更新,仅此而已。可能列属性错误。我已多次校对,它们是正确的。1。错误2。google for sql注入变量包含什么?可能是因为您在其中有未替换的撇号吗?没有错误,它不会更新数据库。数据库有id、用户名、更新,仅此而已。可能列属性是错误的。我已经多次校对了它们,它们是正确的。只要您首先选择mysql\u select\u db,这样您就可以选择活动数据库,并且更新是所述数据库中的有效表。您的mysql\u real\u escape\u字符串没有任何作用,数据库没有更新。选择了正确的数据库,其中一个表工作,但另一个不工作。我检查了拼写错误,没有任何错误,没有骰子。正如迈克所说,你是否已经成功连接并选择了数据库。你能给我们看更多的文件吗?正如我之前所说,一个表在完全相同的.php文件中工作,并更新数据库,另一个不更新。Treffynnon在这里给出了一个有用的答案,去检查一下。只要您首先选择mysql\u select\u db,这样您就可以选择一个活动数据库,并且更新是该数据库中的一个有效表。您的mysql\u real\u escape\u字符串没有做任何操作,数据库没有更新。选择了正确的数据库,其中一个表工作,但另一个不工作。我检查了拼写错误,没有任何错误,没有骰子。正如迈克所说,你是否已经成功连接并选择了数据库。你能给我们看更多的文件吗?正如我之前所说,一个表在完全相同的.php文件中工作,并更新数据库,另一个不更新。Treffynnon在这里给出了一个有用的答案,去看看。谢谢Treffy,它工作了。令人惊讶的是,第一条INSERT语句可以工作,但第二条语句没有返回标记。有什么原因吗?我不知道你的确切意思,但你不能有像SELECT、UPDATE、INSERT等MySQL关键字的列名。哦,现在一切都有意义了。谢谢Treffy,它成功了。令人惊讶的是,第一条INSERT语句可以工作,但第二条语句没有返回标记。有什么原因吗?我不知道你的确切意思,但你不能有像SELECT、UPDATE、INSERT等MySQL关键字的列名。哦,现在一切都有意义了。