Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965

Кавычки одинарные и двойные

13.09.2014, 18:31. Показов 6735. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Друзья, прошу Вас объяснить мне вот, что: пишу сайт на php и для хранение информации использую sql, в скриптах естественно есть коды запроса. Запросы обворачиваю кавычками, пример:
PHP
1
2
3
            $sql = "SELECT * 
                FROM photo
                WHERE photo = '$photo'";
В данном примере кавычки двойные (") если я сменю их на одинарные ('), то получу ошибку:
Parse error: syntax error, unexpected T_VARIABLE in /........../index.php on line 19
19 строка:
PHP
1
                WHERE photo = '$photo'';
И наоборот, есть код запроса завернутый в одинарные кавычки и так же, если я сменю их на одинарные получу ту же ошибку. Например этот запрос с одинарными кавычками:
PHP
1
2
3
4
        $sql2 = 'SELECT * 
            FROM photo 
            ORDER BY id DESC 
            LIMIT ' . $limit . ', ' . $offset . '';
Тоже самое и переменными в запросе, где то можно поставить только так: '$photo', где то только так: ' . $photo . ', а где то вообще их убирать надо, иначе выходит ошибка...
Почему так выходит? Как допилить, что бы были везде одинаковые кавычки (хочу сделать везде одинарные)?
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.09.2014, 18:31
Ответы с готовыми решениями:

Одинарные и двойные кавычки
Друзья, есть код в php: const CONFIG_PHP_FILE_TEXT = '<?php define("domain","%s"); $config=array(); $config="%s"; ...

Одинарные и двойные кавычки
Здравствуйте! Рационально ли в одном PHP скрипте использовать одновременно одинарные и двойные кавычки? Используете ли вы в своих...

Json_decode и одинарные кавычки
Через encode кодирую строку с одинарными кавычками. Возвращает строку с экранированными ' в \'. Но json_decode возвращает ошибку(4). У...

11
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
13.09.2014, 18:38
Raisin Zn, почитай тут http://php.net/manual/ru/language.types.string.php.
1
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
13.09.2014, 18:44
Начну с того, что двойные и одинарные кавычки работают по разному.
В двойных ты можешь писать спецсимволы типа перевода строки(\n) также можешь писать переменные не используя конкатенацию(опишу чуть ниже).
Например:
PHP
1
2
3
4
$a='Hello';
echo $a; // Hello - пиши так
echo '$a'; // $a
echo "$a"; // Hello
Конкатенация - это объединение строк/переменных в одну строку, в php это делается через точку:
PHP
1
2
3
4
5
$a='Hello';
$b='world!';
echo $a.' '.$b; // Hello world! - пиши так
echo "$a $b"; // Hello world!
echo '$a $b'; // $a $b
Так вот:
PHP
1
2
3
4
5
6
7
8
$sql2 = 'SELECT * FROM photo ORDER BY id DESC LIMIT ' . $limit . ', ' . $offset . '';
/*
Тут строка "SELECT * FROM photo ORDER BY id DESC LIMIT "
объединяется с переменной $limit
после объединяется со строкой ", "
после объединяется с переменной $offset
после объединяется с пустой строкой ""
*/
Советую везде использовать одинарные кавычки и конкатенацию, а для запросов лучше двойные, например:
PHP
1
2
3
$name='Игорь';
$age=21;
mysqli_query("select * from table where name='".$name."' and age=".$age,$connect);
1
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
13.09.2014, 19:09  [ТС]
Цитата Сообщение от Voka Посмотреть сообщение
Советую везде использовать одинарные кавычки и конкатенацию, а для запросов лучше двойные
Спасибо за совет, я так и буду делать.
Добьюсь, что везде будет все одинаково.
0
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
13.09.2014, 19:57
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Спасибо за совет, я так и буду делать.
Добьюсь, что везде будет все одинаково.
Для запросов двойные лучше т.к. читается удобнее чем:
PHP
1
mysqli_query('select * from table where name=\''.$name.'\' and age='.$age,$connect);
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.09.2014, 21:15
Цитата Сообщение от Voka Посмотреть сообщение
а для запросов лучше двойные, например:
я, конечно, извиняюсь, но что за бред..?
Двойные кавычки следует использовать, по большей части, только тогда, когда вы хотите подставлять переменные в саму строку, а никак не с помощью конкатенации.
Цитата Сообщение от Voka Посмотреть сообщение
PHP
1
"select * from table where name='".$name."' and age=".$age
PHP
1
"select * from table where name='$name' and age=$age"
А для самого php зачастую лучше одинарные с конкатенацией, т.к.:
1) парсер не будет искать переменные внутри строки (соответственно, код выполняется несколько быстрее). Не сказал бы, что такая уж "экономия на спичках" при наличии большого объема подобных подстановок
2) Исключается возможность ошибок наподобие нескольких переменных или "лишних" символов в имени переменных. Например:
PHP
1
2
$foo = 'bar';
$str = "$foobaz";
Это переменная $foob/$fooba и т.п. и буквы, или же переменная $foo и буквы? Тогда уже приходится изгаляться
PHP
1
$str = "${foo}baz"; // или "{$foo}baz"
Цитата Сообщение от Voka Посмотреть сообщение
т.к. читается удобнее чем:
Кто мешает заменить апострофы на кавычки внутри строки?
PHP
1
'select * from table where name="'.$name.'" and age='.$age
1
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
14.09.2014, 05:06  [ТС]
KOPOJI, спасибо. Как бы Вы сделали в этих запросах?:
PHP
1
2
3
            $sql2 = "SELECT COALESCE(SUM(plus), 0) AS plus, COALESCE(SUM(minus), 0) AS minus
                FROM likes
                WHERE subject = '$photo'";
И:
PHP
1
2
3
4
        $sql2 = "SELECT * 
            FROM photo 
            ORDER BY id DESC 
            LIMIT $limit, $offset";
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
14.09.2014, 11:17
Цитата Сообщение от Raisin Zn Посмотреть сообщение
"SELECT COALESCE
Непонятно, зачем это здесь. У вас не MySQL ?
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Как бы Вы сделали в этих запросах?
Я практически не использую двойные кавычки в силу привычки. Я бы сделал с подготовленными выражениями или конкатенацией.
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
14.09.2014, 11:44  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
У вас не MySQL ?
У меня MySQL...
Цитата Сообщение от KOPOJI Посмотреть сообщение
Непонятно, зачем это здесь.
Это было для замены NULL на ноль, кстати работало нормально, без ошибок. На данный момент снес эту штуку так как некоторые ячейки перенес в другую таблицу.
Цитата Сообщение от KOPOJI Посмотреть сообщение
Я бы сделал с подготовленными выражениями или конкатенацией.
Можете показать пару примеров, как Вы это делаете? Я тоже стремлюсь к одинарным кавычкам (как писал выше):
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Как допилить, что бы были везде одинаковые кавычки (хочу сделать везде одинарные)?
но пока плохо получается...
Спасибо.

Добавлено через 2 минуты
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Можете показать пару примеров, как Вы это делаете?
Пример на моих запросах https://www.cyberforum.ru/post6604855.html
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
14.09.2014, 11:54
Лучший ответ Сообщение было отмечено Raisin Zn как решение

Решение

Цитата Сообщение от Raisin Zn Посмотреть сообщение
Это было для замены NULL на ноль
Ну не знаю, мне проще при выводе преобразовать к нужному типу Просто подобные конструкции обычно в Access-е юзают..
Цитата Сообщение от Raisin Zn Посмотреть сообщение
Можете показать пару примеров, как Вы это делаете?
Ну в PHP я использую PDO, а не mysqli. Примеры подготовленных выражений я писал когда-то здесь Подготовленные выражения
Ну или на офф сайте есть примеры http://php.net/manual/ru/mysqli.prepare.php
Хотя, если поле subject числовое, то можно и обойтись без них, в общем-то.
PHP
1
$sql2 = 'SELECT ..... WHERE subject = ' . (int) $photo;
PHP
1
$sql = 'SELECT * FROM photo ORDER BY id DESC LIMIT ' . $limit . ', ' . $offset;
P.S. Если вы используете mysql_* - то сразу говорю, она толком не поддерживает подготовленные выражения.
1
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
14.09.2014, 12:00  [ТС]
KOPOJI, спасибо Вам большое!
Буду следовать Вашим примерам и добиваться желаемого!
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
14.09.2014, 12:39
Raisin Zn, подстановкой значений должен заниматься уровень абстракции базы. Нельзя их просто вставлять в запрос - это ведет к SQL-инъекциям.

Используй это: http://php.net/manual/ru/mysqli.prepare.php
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.09.2014, 12:39
Помогаю со студенческими работами здесь

Функция printf и одинарные кавычки
Здравствуйте, столкнулся с такой проблемой, в printf('') не работают ковычки ' из-за чего и не работает скрипт что можно придумать? ...

Передача переменной содержащей двойные кавычки из PHP в JS
Проблема в следующем: создаю массив строк. Строки формируются из различных переменных. А вот при передаче переменной $arElementNAME (Она...

Почему в выходном SQL запросе двойные кавычки в тексте и как это исправить?
Чо за беда такая? если пишу в коде $query2 = $query2."('$Login','$Email','$ID','$AdvOpenSource','$DateAccess')"; то в...

Как заменить одинарные кавычки на двойные в HTML-выводе?
Здравствуйте! Такой вопрос: как мне сделать так, чтобы у меня были вместо одинарных кавычек - двойные в HTML коде, в значении value? Вот...

Как удалить все одинарные кавычки из строки?
Как удалить все одинарные кавычки из строки?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru