为什么MySQL插入' \\'在我的链接之前?

时间:2014-06-25 15:43:23

标签: php html mysql database hyperlink

当我通过PHP在表单中插入链接时,我的数据库会在链接之前添加反斜杠。我用tinyMCE。

示例,这是它在数据库中的外观:

(14, 'MULTIMÉDIA', 'multimdia', '<h2><strong>RISING HARMONY&nbsp;</strong></h2>\r\n<p><strong>ITT A ZENE VIL&Aacute;GA URALKODIK.</strong></p>\r\n<p><strong>KEDVENC&Eacute;T &Ouml;N IS MEGOSZTHATJA&nbsp;</strong><strong>AZ AL&Aacute;BBI C&Iacute;MEN:</strong></p>\r\n<p><strong><a href=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;mailto:personicum@gmail.com\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\">personicum@gmail.com</a> &nbsp;</strong></p>', '<p><iframe src=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;/www.youtube.com/embed/1ov6USLXwGA\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" width=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;270\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" height=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;152\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" frameborder=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;0\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" allowfullscreen=\\"allowfullscreen\\"></iframe>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<iframe src=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;/www.youtube.com/embed/bnv6dPQ5f88\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" width=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;263\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" height=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;150\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" frameborder=\\"\\\\&quot;\\\\\\\\&quot;\\\\\\\\\\\\\\\\&quot;0\\\\\\\\\\\\\\\\&quot;\\\\\\\\&quot;\\\\&quot;\\" allowfullscreen=\\"allowfullscreen\\"> )

这应该是youtube视频,通过tinyMCE插入。它对图像和任何类型的链接都做同样的事情。所以,我的问题是,为什么会出现这些事情?

这是表格:

CREATE TABLE IF NOT EXISTS `blog_posts_seo` (
`postID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`postTitle` varchar(255) DEFAULT NULL,
`postSlug` varchar(255) DEFAULT NULL,
`postDesc` text,
`postCont` text,
`postDate` datetime DEFAULT NULL,
PRIMARY KEY (`postID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;

使用另一个表它运行正常,所以这意味着问题不是我的PHP,但如果需要,我会在这里复制它。这个问题是由什么引起的?在网站上有404错误而不是视频。

如果我通过My​​SQL手动插入它们,那么一切都很好,但如果我通过表单插入它看起来像这样。此外,如果我使用相同的PHP与另一个数据库,它工作正常。这是一个悖论,我没有经验。我无法找到问题。

此外,在本地它工作正常,它显示如下:

<p><iframe src="//www.youtube.com/embed/Lcu8SdcsYnY" width="425" height="350"></iframe></p>

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您在输入上多次运行addslashes()或其他转义函数。你可能也有魔术引号。您应该将字符串保持为raw,并在插入数据库之前将其转义。最好使用PDO的绑定参数。