首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL数据库中存储包含引号的字符串?

如何在MySQL数据库中存储包含引号的字符串?
EN

Stack Overflow用户
提问于 2010-04-19 07:18:45
回答 5查看 1.9K关注 0票数 2

我有下表:

代码语言:javascript
复制
$sql = "CREATE TABLE received_queries
    (
     sender_screen_name varchar(50),
     text varchar(150)
    )";

我使用以下SQL语句将值存储在表中

代码语言:javascript
复制
$sql = "INSERT INTO received_queries VALUES ('$sender_screen_name', '$text')";

现在,我试图将以下字符串存储为“text”。

还有一句话:脑海中的棉毛,睡不着的感觉是无法治愈的,我需要一些咖啡。

我得到以下错误消息:

错误:您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便使用接近“无法治愈”的语法;我需要一些咖啡。在第1行

我想这一定是个很常见的问题。我该怎么解决呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-19 07:25:17

我建议使用预先准备好的语句(使用mysqli或pdo)而不是转义。

票数 4
EN

Stack Overflow用户

发布于 2010-04-19 07:29:12

请注意,将这样的SQL查询组合在一起可能会带来安全风险.

一个更好的方法是使用准备语句。这基本上意味着将某些占位符放到实际值(如$sender_screen_name$text)中的SQL中。

我搜索了'net‘并提出了以下代码片段,展示了如何在PHP中完成准备好的语句(如果这可能不是最好的PHP,我通常不会用这种语言编写任何程序--但我想它可以作为一个合理的起点):

代码语言:javascript
复制
$dbSelect = $objDb->prepare("INSERT INTO received_queries VALUES (:ssn, :text");

$dbSelect->bindParam('ssn', $sender_screen_name);
$dbSelect->bindParam('text', $text);

通过将查询作为预先准备好的语句执行,您不需要担心自己转义字符串。PHP和RDBMS将自动为您处理这一问题。

票数 4
EN

Stack Overflow用户

发布于 2010-04-19 07:21:05

您可以使用mysql_real_escape_string

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2665744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档