2012-01-09 2 views
0

Я изучаю SQL с использованием Wampserver, Crimson editor и the New Boston tutorials. Ничего не работало до тех пор, пока я не изменю кавычки:странное поведение котировки

С командами SQL обычные «одинарные кавычки» не работают, но weird slanty quotes do.

При использовании форм и $_GET["name"]; будут работать только двойные кавычки.

Любая идея, что здесь происходит? Я использую английскую клавиатуру, но так же и репетитор видео, и он использует $_GET['name']; с одинарными кавычками.

EDIT: Пример кода:

if(isset($_GET["sortBy"])&&!empty($_GET["sortBy"])) // only works with "full" quotes 
{ $sortBy   = $_GET["sortBy"]; 
    echo "sortBy works <br><br>"; 
} 
$topTenResult = "SELECT `name`,`intuition`,`bravery`,`romance` FROM `scores` ORDER BY $sortBy DESC"; 
// does not work with default keyboard single quotes 
+2

Показать код. Вы описываете ссылки PHP-кода, а не MySQL, как указывают теги. –

+0

если (Исеть ($ _ GET [ "SortBy"]) && пусто ($ _ GET [ "SortBy"])!) {\t $ SortBy \t \t \t = $ _GET [ "SortBy"]; \t echo "sortBy works

"; } // это не сработало, пока я не сменил на двойные кавычки –

+0

$ topTenResult \t = "SELECT' name', 'intuition',' bravery', 'romance' FROM' score' ORDER BY $ sortBy DESC "; // это не работает с одиночными кавычками по умолчанию –

ответ

2

В SQL одинарные кавычки пометить строки.

В MySQL обратные кавычки отмечают «идентификаторы с разделителями». Это имена, которые чувствительны к регистру или сталкиваются с ключевыми словами. Обратные кавычки уникальны для MySQL; MS SQL Server использует квадратные скобки для одной и той же работы. Оба являются нестандартными расширениями.

В стандартном SQL двойные кавычки используются для обозначения идентификаторов с разделителями. Некоторые СУБД рассматривают двойные кавычки как маркирующие строки, если они не входят в стандартный режим; некоторые рассматривают их как идентификаторы с разделителями автоматически.

+0

Спасибо! Теперь это намного яснее. –

2

Это признак наличия вложенных котировок.

.... " ... $_GET["name"] ... 

Вышеупомянутое не соответствует действительности, поскольку $ _GET находится внутри строки с двойными кавычками. Итак, найдите ложную двойную кавычку, которая превращает ваш код в ошибки.

Возможно, синтаксическая раскраска помогает (например, в среде IDE NetBeans, с хорошей поддержкой PHP).

Смежные вопросы