mysql插入新内容时有奇怪的错误?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql插入新内容时有奇怪的错误?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3589字,纯文字阅读大概需要6分钟。
内容图文
![mysql插入新内容时有奇怪的错误?](/upload/InfoBanner/zyjiaocheng/244/47d9b36671434385bba8e20e79fab517.jpg)
我的同事跟我说,有一篇新闻稿死活发布不了,一发布就提示错误,于是丢到我这里来了。
我一开始是认为可能之前开发的人数据库字段类型的坑,可能长度不够,因为这篇新闻稿确实是挺长的。然后我describe了一下,发现字段类型是text。以防万一,我还是拿那篇新闻稿去做个字符统计,结果完全是text长度以内的。当然,我黏贴的时候小心地选择了纯文本黏贴,避免奇怪的东西混入。
好吧,然后我试着将mysql_error输出。
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's up》由xxx演唱,带动了' at line 1
我翻了一下原文,发现了这个句子:
一首活泼轻快的《What's up》由xxx演唱,带动了现场氛围。在xxx带来的一曲风格迥异的《美丽的笨女人》后,第一轮竞演顺利结束。
所以即使到了这里,我也不知道这到底是闹哪只鬼。
于是我试着只输入《What's up》,试着发布一下。果不其然,又出错了。
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's up》
然后我发现,这个what`s中的那个小点点,不是反引号,而是单引号。
这是反引号 `
这是单引号 '
只歪了一丢丢咯朋友。
难道这是辣鸡编辑器的问题?单引号没有闭合?
然后我试着输入's'
发布
然后
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's'
为什么呢?
编辑器??
于是我看了一下编辑器的html视图
's'
正常得连个html标签都没有。
然后我只好把'改为`。英文缩写好像就是反引号的吧。但是辣鸡编辑器并没有高级到这种水平啊。
所以,我到了这里来求助。
不要吐槽标题,因为我真的不知道这是什么狗屁问题。
回复内容:
先说一下事情发生的原因。
我的同事跟我说,有一篇新闻稿死活发布不了,一发布就提示错误,于是丢到我这里来了。
我一开始是认为可能之前开发的人数据库字段类型的坑,可能长度不够,因为这篇新闻稿确实是挺长的。然后我describe了一下,发现字段类型是text。以防万一,我还是拿那篇新闻稿去做个字符统计,结果完全是text长度以内的。当然,我黏贴的时候小心地选择了纯文本黏贴,避免奇怪的东西混入。
好吧,然后我试着将mysql_error输出。
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's up》由xxx演唱,带动了' at line 1
我翻了一下原文,发现了这个句子:
一首活泼轻快的《What's up》由xxx演唱,带动了现场氛围。在xxx带来的一曲风格迥异的《美丽的笨女人》后,第一轮竞演顺利结束。
所以即使到了这里,我也不知道这到底是闹哪只鬼。
于是我试着只输入《What's up》,试着发布一下。果不其然,又出错了。
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's up》
然后我发现,这个what`s中的那个小点点,不是反引号,而是单引号。
这是反引号 `
这是单引号 '
只歪了一丢丢咯朋友。
难道这是辣鸡编辑器的问题?单引号没有闭合?
然后我试着输入's'
发布
然后
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's'
为什么呢?
编辑器??
于是我看了一下编辑器的html视图
's'
正常得连个html标签都没有。
然后我只好把'改为`。英文缩写好像就是反引号的吧。但是辣鸡编辑器并没有高级到这种水平啊。
所以,我到了这里来求助。
不要吐槽标题,因为我真的不知道这是什么狗屁问题。
很好,发现了就好,这就是传说中的sql注入!所以建议你仔细看看PDO的文档,用安全的方式插入数据,如
$pdo->query('insert into table set field1 = ?, field2 = ?, field3 = ?', array('param1', 'param2', 'param3'));
这样PDO会帮你把那个讨厌的单引号自动转义的。
你把单引号转义后,在执行插入操作,看还报错吗?就是单引号前面加个反斜杠
数据库连接方式用PDO或者插入前对变量htmlspecialchars
用mysql的话试试 mysql_real_escape_string(可选addslashes)
注意检查 get_magic_quotes_gpc
文档有例子
楼上的正解!
@incNick 正解
内容总结
以上是互联网集市为您收集整理的mysql插入新内容时有奇怪的错误?全部内容,希望文章能够帮你解决mysql插入新内容时有奇怪的错误?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。