2010-11-26 77 views
0

我正在写一个PHP脚本,用于对数据库执行简单的操作。为了获得MySQL查询,我使用phpmyadmin来生成PHP。当我使用生成的phpmyadmin例如命令创建一个表,这是结果:“”在PHP/MySQL脚本中做什么

$sql = "CREATE TABLE `pyr`.`table1` (`id` INT NOT NULL) ENGINE = MyISAM COMMENT = \'Some comments...\';"; 

如果我插入这个对我的PHP脚本,这是行不通的。但是,如果我删除\,它的工作原理。 \是做什么的?

回答

4

转义字符',因此它可以在你的字符串写入。但是,如果您的字符串包含在单引号内,则只需简单地引用该引号即可。在你的例子中,它包含在报价中,所以你不必逃避简单的引号!例如:

$a = "I'm a cat"; // no need to escape 
$b = 'I\'m a cat'; // you have to escape, otherwise 
        // the second ' would be interpreted as the end of your string! 
$c = "He says : \"I'm a cat\""; // You have to escape the double quotes 
           // in this case, because your string is enclosed 
           // within double quotes 
0

它会把你的查询报价

0

这是一种“转义”引号的方法,因此您可以在带引号的字符串中使用相同的引号。

正确的例子是

$somestring="This string has \"quotes\" in it"; 

但是这个例子是不正确。没有必要在该字符串中转义单引号,因为它是双引号。

PHP manual,特别是这部分

要指定一个单引号,用反斜杠()

1

phpMyAdmin的设计了这个查询逃避它用单引号一起使用:

$sql = 'CREATE TABLE `pyr`.`table1` (`id` INT NOT NULL) 
ENGINE = MyISAM COMMENT = \'Some comments...\';'; 

在这种情况下,反斜杠正确地转义单引号告诉PHP它们不是str的结尾ING。