这是我尝试引用字符串时得到的内容
$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' => '',
),
答案 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,您会看到它在字符串的开头和结尾处放置单引号,因此它需要转义字符串中的所有其他单引号。