如何在MySQL中存储包含引号的数据

时间:2010-04-27 11:59:33

标签: php mysql

在我的一个表单中,我使用Yahoo!的富文本编辑器。 现在我想将来自该textarea的数据存储在MySQL数据库中。

用户可以在该textarea中输入任何内容,例如许多双引号或单引号。

如何存储该数据?

通常我们通过将数据添加到一个变量中来存储,然后将其放在sql中,但引号会导致问题。

6 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

您可以使用mysql_real_escape_string()

  

转义中的特殊字符   unescaped_string,考虑到   当前的字符集   连接,以便安全放置   它在mysql_query()中。如果二进制数据   要插入,这个功能必须   使用。

     

mysql_real_escape_string()调用   MySQL的库函数   mysql_real_escape_string,其中   在下面添加反斜杠   字符:\ x00,\ n,\ r,\,',“和   \ X1A。

     

此功能必须始终(少数   例外)用于使数据安全   在向MySQL发送查询之前。

e.g。

$value = mysql_real_escape_string(" ' \" etc ");
$sql = "INSERT INTO blah VALUES ('$value')";

但更好的解决方案是使用PDOprepared statements

答案 2 :(得分:0)

如果PDO不是一个选项,您可以使用mysqli而不是prepared statement

答案 3 :(得分:0)

这是我的数据作为 API 响应的样子,我想将其存储在 MYSQL 数据库中。它包含引号、HTML 代码等。

示例:-

{

rewardName: "Cabela's eGiftCard $25.00",

shortDescription: '<p>adidas gift cards can be redeemed in over 150 adidas Sport Performance, adidas Originals, or adidas Outlet stores in the US, as well as online at&nbsp;<a href="http://adidas.com/">adidas.com</a>.</p>

terms: '<p>adidas Gift Cards may be redeemed for merchandise on&nbsp;<a href="http://adidas.com/">adidas.com</a>&nbsp;and in adidas Sport Performance, adidas Originals, and adidas Outlet stores in the United States.'

}

解决方案

CREATE TABLE `brand` (
`reward_name` varchar(2048),
`short_description` varchar(2048),
`terms` varchar(2048),  
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

插入时,接着JSON.stringify()

    let brandDetails= {
    rewardName: JSON.stringify(obj.rewardName),  
    shortDescription: JSON.stringify(obj.shortDescription),
    term: JSON.stringify(obj.term),
     }

上面是JSON对象,下面是向MySQL插入数据的SQL查询。

let query = `INSERT INTO brand (reward_name, short_description, terms) 
VALUES (${brandDetails.rewardName}, 
(${brandDetails.shortDescription}, ${brandDetails.terms})`;

它的工作....

enter image description here

答案 4 :(得分:-4)

更好!将内容提交到数据库时,请使用addslashes();

检索并显示字符串时,使用stripslashes();

$ string =“太棒了!”;

和addslashes($字符串); 将在数据库中出现那种令人敬畏的东西(并且不会破坏任何东西)

然后stripslashes($ string); 将恢复正常。

http://php.net/manual/en/function.addslashes.php

我一直都在使用它 - 简单直接。

答案 5 :(得分:-4)

谢谢你们,
为了你的重播。
但我只更换了引号字符...由此...

html = html.replace(/\'/g, "&#39;"); // 39 is ascii of single quotes
html = html.replace(/\"/g, "&#34;"); // 39 is ascii of double quotes

然后存储在数据库中。
它的工作很棒......通过这种方式...... 当我想要那些数据时,我只需要替换它的原始数据。

但是感谢您的重播..


尼蒂什。
Panchjanya Corporation