PHP: разные цитаты? - PullRequest
6 голосов
/ 23 августа 2009

В чем разница между кавычками "и"? Как насчет "? Есть ли ошибка в использовании разных кавычек" и "ниже?"

 $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 ]

19 голосов
/ 23 августа 2009

Подстановка переменных не выполняется при использовании одинарных кавычек ('), это означает, что значения в вашем первом примере были бы буквально $ 1 $ 2 и т. Д., Если бы это была обычная строка и не передавалась функции, которая их заменяет. 1001 *

Если вам не нужна переменная подстановка, лучше придерживаться одинарных кавычек из соображений производительности.

`` вызывает движок оболочки и вызывает его как фактическую команду и возвращает результат, как в 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 ОТ пользователей, ГДЕ электронная почта = user@example.org

$ sql2 будет SELECT user_id ОТ пользователей, ГДЕ электронная почта = $ email

3 голосов
/ 23 августа 2009

По сути, " позволяет вставлять переменные следующим образом:

<?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 )

Использование ' означает, что проверка переменных не производится.

<?php
echo '$beer';
?>

выдаст $beer.

2 голосов
/ 23 августа 2009

Разница между одиночными и двойными кавычками хорошо объяснена в руководстве по PHP о строках .

В вашем примере, поскольку вы используете переменные подстановки, такие как $1, которые означают что-то специфическое для pg_query_params, и что вы делаете не , чтобы PHP интерпретировал как имена переменных, вы должны использовать одинарные кавычки для ваших строк SQL-запроса.

...