PHP:不同的报价?

时间:2009-08-23 08:02:57

标签: php quotes

引号“和”之间的区别是什么?怎么样?使用不同的引号和“下面是否有错误?”

 $result = pg_query_params($dbconn,
      'INSERT INTO users 
      (username, email, passhash_md5)
      VALUES ($1, $2, $3)',
          array($username, $email, $passhash_md5
      )


      $result = pg_query_params( $dbconn,
          "SELECT user_id
           FROM users
          WHERE email = $1",
          array( $email )
          )

3 个答案:

答案 0 :(得分:19)

当使用单引号(')时,不会进行变量替换,这意味着如果第一个示例中的值实际上是$ 1 $ 2等,如果它是常规字符串并且没有传递给替换它们的函数。< / p>

如果您不需要变量替换,出于性能原因,最好坚持使用单引号。

``调用shell引擎并将其作为实际命令调用,并返回结果,就像在perl中一样。因此,它具有完全不同的含义。

的示例:

$email = 'user@example.org';
$sql1 = "SELECT user_id FROM users WHERE email = $email";
$sql2 = 'SELECT user_id FROM users WHERE email = $email';

$ sql1将是SELECT user_id FROM users WHERE email = user@example.org

$ sql2将是SELECT user_id FROM users WHERE email = $ email

答案 1 :(得分:3)

基本上,"允许您嵌入变量:

<?php
$beer = 'Heineken';
echo "$beer's taste is great"; // works; "'" is an invalid character for variable names
echo "He drank some $beers";   // won't work; 's' is a valid character for variable names but the variable is "$beer"
echo "He drank some ${beer}s"; // works
echo "He drank some {$beer}s"; // works
?>

(来自php manual

使用'表示不会检查变量。

<?php
echo '$beer';
?>

输出$beer

答案 2 :(得分:2)

单引号和双引号字符串之间的区别在PHP manual about Strings

中得到了很好的解释

在您的示例中,由于您使用的替换变量(例如$1)表示特定于pg_query_params的某些内容,而您希望PHP将其解释为变量名称,您应该为SQL查询字符串使用单引号。