MYSQL:插入错误
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`
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
FROMEvent
ORDER BYKey\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();