Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
MYSQL:插入错误_Mysql - Fatal编程技术网

MYSQL:插入错误

MYSQL:插入错误,mysql,Mysql,MYSQL在插入特定类型的文本时出现问题 例如,当我尝试插入以下内容时: INSERT INTO `Attacks_key` (`Event_Key` ,`Variable` ,`Value` ,`Impact` ,`Tags`) VALUES ('111', 'REQUEST', ' mysql_real_escape ', '222', 'xss, csrf, id, rfe, lfi'); 已插入,但当我尝试插入时: INSERT INTO `Attacks_key`

MYSQL在插入特定类型的文本时出现问题

例如,当我尝试插入以下内容时:

INSERT INTO `Attacks_key` 
  (`Event_Key` ,`Variable` ,`Value` ,`Impact` ,`Tags`)
    VALUES 
  ('111', 'REQUEST', ' mysql_real_escape ', '222', 'xss, csrf, id, rfe, lfi');
已插入,但当我尝试插入时:

INSERT INTO `Attacks_key` 
 (`Event_Key` ,`Variable` ,`Value` ,`Impact` ,`Tags`) 
   VALUES 
 ('111', 'REQUEST', 'mysql_real_escape_string($_POST['username']); ', '222', 'xss, csrf, id, rfe, lfi');
MYSQL显示此消息:

#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在“username”];,”附近使用的正确语法第1行的“222”、“xss、csrf、id、rfe、lfi”)

这是我的php代码

$user="root";
$password="*";
$database="*";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$sql = "SELECT `Key_id` FROM `Event` ORDER BY `Key_id` DESC LIMIT 1";
$result =mysql_query($sql);
$row = mysql_fetch_assoc($result);
$EventKey= $row['Key_id'];
$query="INSERT INTO `PHPLOGS`.`Attacks_key` (`Event_Key` ,`Variable` ,`Value` ,`Impact` ,`Tags`) VALUES ('$EventKey', '$getname', '$getvalue', '$getimpec', '$gettags');";
mysql_query($query);
mysql_close();
输入'mysql_real_escape_string($_POST['username']);来自用户

有人能帮忙吗

谢谢

试试看

$query=sprintf(“插入攻击密钥(事件密钥、变量、值、影响、标记)值('111','REQUEST','%s','222','xss,csrf,id,rfe,lfi');”,
mysql_real_escape_字符串($_POST['username'])

语句的该部分与
'username'


如果要插入
mysql\u real\u escape\u字符串($\u POST['username'),请查看然后转义单引号

INSERT INTO `Attacks_key` 
 (`Event_Key` ,`Variable` ,`Value` ,`Impact` ,`Tags`) 
   VALUES 
 ('111', 'REQUEST', 'mysql_real_escape_string($_POST[\'username\']); ', '222', 'xss, csrf, id, rfe, lfi');

因为您真的应该切换到PDO,而不是您可以使用的不推荐使用的mysql_uu函数

PDO::quote()在输入字符串周围加引号(如果需要),然后 使用引号转义输入字符串中的特殊字符 适合于底层驱动程序的样式

但是,执行查询的首选方法是使用准备好的查询,在这种情况下,无论如何都不会出现引号转义问题。再次引用PDO的php手册页面:;引述

如果您使用此函数构建SQL语句,则 强烈建议使用PDO::prepare()来准备SQL语句 使用绑定参数,而不是使用PDO::quote()进行插值 用户输入到SQL语句中。有约束力的准备好的陈述 参数不仅更可移植,更方便,对SQL免疫 注入,但执行速度通常比插值快得多 查询,因为服务器端和客户端都可以缓存已编译的表单 查询的最后一步


如果出于任何原因PDO不是一个选项,那么也有类似的功能。

您有嵌套的引用节
“mysql\u real\u escape\u string($\u POST['username']);”
包含
“用户名”
-这是另一个您在准备语句时不会遇到的问题!您是否真的试图插入文本值
mysql\u real\u escape\u string($\u POST['username'])
或者这应该是PHP代码?您真的尝试过吗?MySQL如何知道它必须解释
MySQL\u real\u escape\u字符串($\u POST['username'])
作为字符串?我没有尝试过,我不确定如何在PHP中进行参数化查询,但是冲突在引号中。答案旨在强调,除了提供剪切/粘贴代码解决方案,我还应该更清楚地说明这一点。理想情况下,您可以将转义值分配给一个变量,并在查询中使用该变量。但是Ruel im设计了我自己的PHPIDS(PHP入侵检测系统)和这个输入表单用户,他们试图入侵我的网站,因此我试图将所有信息保存到mySQl数据库,如果我不能将其更改为“'mySQl\u real\u escape\u string($\u POST[\'username\'];“这是我的php代码$user=“root”$password=“”;$database=“”;mysql\u连接(localhost,$user,$password);@mysql\u选择数据库($database)或死亡(“无法选择数据库”);$sql=“选择
Key\u id
FROM
Event
ORDER BY
Key\u id
DESC LIMIT 1”$result=mysql\u查询($sql)$row=mysql\u fetch\u assoc($result);$EventKey=$row['Key\u id'];$query=“插入
PHPLOGS
Attacks\u Key
Event\u Key
变量
影响
标记
)值('EventKey','getname','getvalue','getimpec','getags');$mysql查询($query;mysql_close();