None
?
ничего не значит для предложения MySQL WHERE =
, только для нескольких внешних интерфейсов, таких как PHP stdlib и веб-фреймворки, такие как Rails.
?
синтаксическая ошибка в:
CREATE TABLE t (s CHAR(1));
SELECT * FROM t WHERE s = ?;
, потому что она не определена, и в:
INSERT INTO t VALUES ('a');
INSERT INTO t VALUES ("?");
SELECT * FROM t WHERE s = '?';
она возвращает:
s
?
, таким образом, очевидно, без специальных смысл.
Пример Rails
В Rails, например, знак вопроса заменяется аргументом, заданным переменной языка программирования библиотеки (Ruby), например:
Table.where("column = ?", "value")
, и он автоматически цитирует аргументы, чтобы избежать ошибок и SQL-инъекций, создавая оператор вроде:
SELECT * FROM Table WHERE column = 'value';
. Цитата спасет нас в случае чего-то вроде:
Table.where("column = ?", "; INJECTION")
Подготовленные операторы MySQL 5.0
В MySQL 5.0 добавлена функция подготовленной инструкции , которая имеет сходную семантику с вопросительным знаком в веб-фреймворках.
Пример из docs:
PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
SET @a = 3;
SET @b = 4;
EXECUTE stmt1 USING @a, @b;
Выход:
hypotenuse
5
Они также вызывают специальные символы, как ожидалось:
PREPARE stmt1 FROM 'SELECT ? AS s';
SET @a = "'";
EXECUTE stmt1 USING @a;
Выход: [/ g 16]
s
'
Однажды у меня была такая же проблема с установкой пакета обновления. Единственное, что я смог найти, это повторить установку сразу после сбоя. Это заняло около пяти раз, но в итоге это сработало. Я думаю, что в установщике 64-битной Windows есть что-то странное.
Я вижу, что MS ответила на это. Это потому, что выпуск MSSSQL новее, чем SP. У них есть исправление, которое, очевидно, требует применения. О, радость!
http://support.microsoft.com/kb/975055
Затем вам нужно запросить исправление и дождаться отправки вам ссылки. Говорят 5 минут, но посмотрим.
На самом деле это не настоящее решение, но оно сработало у меня после 5-й попытки. Не уверен, что это имеет значение, но с 5-й попытки я свернул все остальные окна (так что настройка SQL была единственным окном, в фокусе которого находится фокус), поскольку проблема, похоже, связана с пользовательским интерфейсом.
Обновление: После преодоления Первая проблема, у меня возникла еще одна проблема, когда фактический компонент ядра базы данных не удалось установить без причины. Решением было перезапустить и повторить попытку.
Установщик x64, похоже, действительно содержит ошибки.
У меня работало закрытие всех открытых окон. определенно проблема пользовательского интерфейса с 64-битной версией.
У меня была та же ошибка, несколько раз раз пытался установить SQL Express 2008 x64 на 64-разрядный сервер 2008 R2 (VMWare), и я, наконец, заставил его работать, выполнив следующие действия:
Запустите установку, и когда она дойдет до точки, где появится окно безопасности с запросом если вы разрешаете установку для запуска, откройте временную папку. C: {GUID} и скопируйте эту папку (содержащую setup.exe и вспомогательные файлы) на свой рабочий стол.
Нажмите «ОК» в диалоговом окне безопасности, возможно, произойдет ошибка.
Как только диалоговое окно с ошибкой исчезнет, просто запустите setup.exe из временного каталога на рабочем столе, и он заработает.
Надеюсь, это поможет кому-то другому.
~ Matt Heidenreich
У меня была такая же проблема, когда я устанавливал в Window 7. Единственное, что я смог найти, это то, что повторите попытку установки сразу после сбоя, и через некоторое время она сработала.