首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中保存此字符串?

问如何在PHP中保存此字符串?
EN

Stack Overflow用户
提问于 2012-04-25 15:17:56
回答 3查看 2.1K关注 0票数 1

当我用PHP保存这个字符串时:

代码语言:javascript
复制
John: "Yes you can".

在我的数据库中另存为:

代码语言:javascript
复制
John: \

我怎样才能用“(不删除”)来保存这些字符串。这是我的php代码:

代码语言:javascript
复制
$titlepost= mysql_real_escape_string($_POST['title']);
$query = "INSERT INTO `titles` (`title`) VALUES ( '".$titlepost."')";
$res = mysql_query($query) or die("Failed".mysql_error() );

echo $titlepost;

output: 
John: \\

表格:

代码语言:javascript
复制
$title = mysql_real_escape_string($_GET['title']);

<form method="post" action="title.php?done=yes" enctype="multipart/form-data">
<input type="text" size="25" name="title" <?php echo "value=\"".$title."\""; ?> > 
<input id="starit" name="submit" value="titleit" type="submit" />
</form>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-25 16:12:12

您的问题与PHP或MysQL无关。

它和非常简单HTML语法规则一样愚蠢。很明显,代码

代码语言:javascript
复制
<input value="John: "YES you can>

将只显示带引号的"John:“部分。要使其正确,必须在值中编码特殊符号。

代码语言:javascript
复制
$titlepost = htmlspecialchars($titlepost,ENT_QUOTES);
?>
<input type="text" name="title" value="<?=$titlepost?>">

至于斜杠-这是愚蠢的过度引用问题。只需引用您的字符串一次,并确保您关闭了magic_quotes_gpc

票数 2
EN

Stack Overflow用户

发布于 2012-04-25 15:24:41

如果您真的只是在数据库中使用John: \,听起来就像是在使用魔术引号(这会导致您在数据库中插入反斜杠,因为您要对转义字符串进行转义)和列大小太小(这就是为什么缺少反斜杠后面的任何东西)。

试试这个:

代码语言:javascript
复制
if(get_magic_quotes_gpc()) $_POST = array_map('stripslashes', $_POST);
$titlepost = mysql_real_escape_string($_POST['title']);

这确保了$_POST不包含任何在使用mysql_real_escape_string后会中断的魔术引号转义数据。

票数 0
EN

Stack Overflow用户

发布于 2012-04-25 15:24:23

尝试使用PDO中的预准备语句

http://php.net/manual/en/pdo.prepared-statements.php

准备好的语句的参数不需要加引号;驱动程序会自动处理这一点。如果应用程序以独占方式使用已准备好的语句,则开发人员可以确保不会发生SQL注入(但是,如果查询的其他部分是用未转义的输入构建的,SQL注入仍然是可能的)。

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

https://stackoverflow.com/questions/10311051

复制
相关文章

相似问题

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