在我的一个表单中,我使用Yahoo!的富文本编辑器。 现在我想将来自该textarea的数据存储在MySQL数据库中。
用户可以在该textarea中输入任何内容,例如许多双引号或单引号。
如何存储该数据?
通常我们通过将数据添加到一个变量中来存储,然后将其放在sql中,但引号会导致问题。
答案 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')";
但更好的解决方案是使用PDO和prepared 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 <a href="http://adidas.com/">adidas.com</a>.</p>
terms: '<p>adidas Gift Cards may be redeemed for merchandise on <a href="http://adidas.com/">adidas.com</a> 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})`;
它的工作....
答案 4 :(得分:-4)
更好!将内容提交到数据库时,请使用addslashes();
检索并显示字符串时,使用stripslashes();
$ string =“太棒了!”;
和addslashes($字符串); 将在数据库中出现那种令人敬畏的东西(并且不会破坏任何东西)
然后stripslashes($ string); 将恢复正常。
http://php.net/manual/en/function.addslashes.php
我一直都在使用它 - 简单直接。
答案 5 :(得分:-4)
谢谢你们,
为了你的重播。
但我只更换了引号字符...由此...
html = html.replace(/\'/g, "'"); // 39 is ascii of single quotes
html = html.replace(/\"/g, """); // 39 is ascii of double quotes
然后存储在数据库中。
它的工作很棒......通过这种方式......
当我想要那些数据时,我只需要替换它的原始数据。
但是感谢您的重播..