В чем разница между кавычками "и"? А как насчет "? Есть ли ошибка в использовании разных кавычек" и" ниже?
$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 )
)
Ответ 1 · рейтинг 20 · jishi
Подстановка переменных не выполняется при использовании одинарных кавычек ('), что означает, что значения в вашем первом примере были бы буквально $1 $2 и т. д., если бы это была обычная строка, а не переданная функции, которая их заменяет.
Если вам не нужна подстановка переменных, лучше придерживаться одинарных кавычек из соображений производительности.
`` вызывает движок оболочки и вызывает его как реальную команду и возвращает результат, как в perl. Отсюда и совсем другое значение.
Примеры:
$email = '[email protected]';
$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 = [email protected]
$sql2 будет SELECT user_id FROM users WHERE email = $email
Ответ 2 · рейтинг 3 · Rich Bradshaw
По сути, " позволяет вставлять переменные следующим образом:
<?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.
Ответ 3 · рейтинг 2 · Greg Hewgill
Разница между строками в одинарных и двойных кавычках подробно описана в Руководстве по PHP о строках.
В вашем примере, поскольку вы используете переменные подстановки, такие как $1, которые означают что-то конкретное для pg_query_params и которые вы не хотите, чтобы PHP интерпретировал их как имена переменных, вы должны использовать одинарные кавычки для строк SQL-запроса.