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

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

13.09.2014, 18:31. Показов 6775. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru