LARAVEL getPdo() - >引用添加斜杠引用而不是另一个引用

时间:2014-10-02 08:19:24

标签: database pdo laravel-4 escaping quote

这是我尝试引用字符串时得到的内容

$string = "Because I'm happy";
$quoted = DB::connection()->getPdo()->quote($string)
// Return 'Because I\'m happy' instead of 'Because I''m happy'

为什么?...请告诉我!

我的数据库连接是

  'connections' => array(
    'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'mytable',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    ),

2 个答案:

答案 0 :(得分:2)

你得到一个\'而不是''对于转义,您使用的是另一个数据库:手册中的示例中的mysql vs sqlite。

转义是由数据库驱动程序提供的。

因此,在sqlite中,正确的方法是将引号加倍:https://www.sqlite.org/faq.html#q14

但是在mysql中,它是一个反斜杠:http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

相关的PDO数据库驱动程序为您正在使用的数据库执行正确的操作。除了(如手册中所述)没有实现quote()方法的数据库。最好的方法是准备好的陈述,这意味着你根本不需要处理逃避价值的事情。

答案 1 :(得分:0)

这是因为您在字符串上运行quote类的PDO方法。

如果查看PHP manual,您会看到它在字符串的开头和结尾处放置单引号,因此它需要转义字符串中的所有其他单引号。