php - 交响乐 : escape single quote string from database?

标签 php mysql symfony1 doctrine

我需要使用 Symfony 的 link_to() 方法生成带有 Javascript 确认对话框的链接。确认对话框文本从数据库条目中获取部分内容:

<?php echo link_to( "click here", 'category/delete?id='.$id, array( 'confirm' => 'Are you sure you want to delete the category: '.$category->getName().'?' ) ) ?>

但如果数据库条目中有一个单引号,确认对话框将不起作用,因为生成的 JS 被单引号包围。因此,如果我有一个名为“John's Articles”的类别,生成的 JS 将像这样开始:

<a onclick="if (confirm('Are you sure you want to delete the category: John's Articles?')) { var f = document.createElement('form'); f.styl.... etc... "

所以,那里的单引号搞砸了确认等......

无论如何,我想我会简单地通过 addslashes() 运行 $category->getName() 但它没有添加任何斜杠...我也尝试保存提前将类别名称作为单独的变量输出,并为其添加斜杠。但它没有添加任何东西。然后我开始查看 Symfony 的 escaping methods并找到了类似 esc_entities() 的方法,但它们导致文本看起来像 John&#039;s Articles

我该怎么办?我想要做的就是在该字符串中的单引号之前添加一个斜杠。我从未尝试过 str_replace("'","\'",$category->getName()) 但它甚至没有做任何事情。我可以在我的模板中创建自己的基本字符串,例如 Alex's Testaddslashes() 就可以了。只是数据库中的这个值我无法添加任何斜杠。

当我查看数据库中的值时,它看起来就像John's Articles。没有特殊字符或编码字符。

我在这里错过了什么?

更新

我尝试了以下代码,结果如下:

echo $category->getName()."<br/>";

echo addslashes($category->getName())."<br/>";

$tmp = $category->getName();
echo addslashes($tmp)."<br/>";

$tmp = addslashes($category->getName());
echo $tmp."<br/>";

$tmp = "Testing's the Testing";
echo addslashes($tmp)."<br/>";

$tmp = str_replace("'","\\'",$category->getName());
echo $tmp;

结果:

John's Articles
John's Articles
John's Articles
John's Articles
Testing\'s the Testing
John's Articles

数据库中的值根本不会添加斜杠...

最佳答案

好像你只是用

addslashes($category->getName())

但是您需要将返回值分配给其他变量,例如。

$nameWithSlashes=addslashes($category->getName())

关于php - 交响乐 : escape single quote string from database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001773/

相关文章:

php - 如何更新时间戳字段今天的mysql行?

php - 使用 MySqli 向 MySql 记录插入 NULL 值

mysql - 如何在 mySQL Workbench 中运行 sql 脚本?

symfony1 - Symfony 中的多个数据库支持

php - Laravel 5 Multi-Tenancy App with separate databases - 用户可以访问多个安装

javascript - 如何将传单标记固定到数据库中的某个位置?

php - 从 MySQL 中的多个表中排序产品价格

mysql - 如何高效设计多列表应用的数据库

php - PHP 5.2.10 和 MySQL 5.0.81 损坏的 UTF-8 字符

php - 交响乐 : error while accessing an array