背景
用户提交以下数据firstName
我使用mysql_real_escape_string
转义用户数据并将其存储在MySQL内存表(table1
)中。
PHP cron每5分钟运行一次然后将这些数据选择到PHP数组中(出于复制原因)并执行以下INSERT命令到相同的表但是采用InnoDB格式(table2
):
INSERT INTO `table2` (`id`,`firstName`) VALUES ('1','aaa');
问题:
如果用户发送带有单引号'
的数据,即“John's”,则会在保存时转义,但不会保存转义。这意味着,它将单引号保存到firstName
的{{1}}。
当发生上述插入命令时,未转义的数据会破坏整个插入命令。如何在没有手动逃离的情况下解决这个问题?
目前我无法转向PDO或mysqli。
答案 0 :(得分:1)
如果不在每次在文字SQL查询中使用数据时手动转义数据,则无法避免这种情况。使用参数化语句或转义数据。
你的“复制原因”是什么意思?也许您不需要从数据库中获取所有数据,只需这样就可以将其推回到另一个表中。直接从另一个表插入更有效。