запрос к бд mysql

программирование php MySQL базы данных sql

усть запрос к бд
select * from `таблица` where `поле`='".$a."'

"поле" имеет тип varchar и имеет значения такого вида
1111
1111
1111
GR444
GR444
GR444

Если переменная $a=1111 то в результате выполнения запроса выводятся записи, соответствующие запросу выше.
Если переменная $a=GR444, то выдается пустой результат

Подскажите, пожалуйста, в чем проблема. Спасибо.

Примечание:
Структура таблицы

CREATE TABLE IF NOT EXISTS `таблица` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) NOT NULL,
`field` varchar(25) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=79 ;

Примечание:
> CREATE TABLE IF NOT EXISTS `таблица`
Прям так и назвали — "таблица"?

нет, конечно, table пусть будет, в названии нет русских букв

Примечание:
$a - строка - значение этой переменной либо 1111, либо GR444
$sql="select * from `table` where `field`='".$a."'";
$res = mysql_query($sql);
if($row=mysql_fetch_array($res))
{
do
{
echo $row['field']; //например
}
while ($row = mysql_fetch_array($res));
}
else
{
echo "Пусто";
}

При $a=1111 выводятся значения, а при $a=GP444 выводится сообщение "Пусто"

Примечание:
переменная $a формируется так:
при авторизации у пользователя появляется некий идентификатор, принимающий изложенные выше значения, он записывается в переменную сессии.
$a=$_SESSION['id'];
и далее при необходимости он используется.
кодировка ср1251
проверка ошибок введена, просто дописывать не стала.

Спасибо, что помогаете в решении вопроса:)

Примечание:
>Безымени проверь лайком. Попробуй ну?
>select * from `таблица` where `поле` like 'GR444'

Проверяла, записи не выводятся

Примечание:
Я разобралась, спасибо всем за помощь. Ошибка была в столбце с GR444, туда как-то записался перевод строки. Сейчас все работает.
Ответы:
varchar это текст, текст проверяется в SQL оператором LIKE
---------
/** LIKE проверят строку на соответствие маске, а не точному значению и блаблабла
И что? Что мешает проверить лайком БЕЗ МАСКИ?
With LIKE you can use the following two wildcard characters in the pattern.
Где тут сказано об обязательном использовании маски?
Вот этот пример:
mysql> SELECT 'a' = 'a ', 'a' LIKE 'a ';
+------------+---------------+
| 'a' = 'a ' | 'a' LIKE 'a ' |
+------------+---------------+
|          1 |             0 |
+------------+---------------+
1 row in set (0.00 sec)
не заставил задуматься? Меня заставил.
---------------
Безымени проверь лайком. Попробуй ну?
select * from `таблица` where `поле` like 'GR444'
----------------
НетРэйн поменьше спеси...
При чем тут регексп? Лайк это инструмент сравнения строк с ПАРОЙ масок. Разницу между  
Микроскопом? Нетрэйн очнись на дворе 2013 год. Ты серьезно думаешь что = будет работать быстрее чем лайк в БД. Мне тебя жаль.
Не заставил задуматься. А то что = было по..р на пробел не натолкнуло на мысль? А то что автор вопроса "случайно записал перевод строки" и вы тут столько времени потратили работая оператором = когда можно было выбрать like 'Искомое%'.
И нафиг проверять запрос к БД через РНР когда для этого есть специальный инструмент.
Структуру таблицы напишите.
Покажите полностью код и структуру базы, чтобы не гадать
Отлично. Осталось показать код, который формирует запрос и отправляет его на выполнение.
Под "полем", как я понимаю, вы имели ввиду поле field?
> CREATE TABLE IF NOT EXISTS `таблица`
Прям так и назвали — "таблица"?
Ок, Код все равно показывайте. На первый взгляд, в структуре все нормально.
И укажите кодировку а) скрипта б) входящих данны, если они используются для формирования запроса.
> Gomoloff
> И что? Что мешает проверить лайком БЕЗ МАСКИ?
Гвозди микроскопом тоже ничего не мешает забивать.
А чо не регекспом проверяете тогда? Тоже ведь никто не запрещает.
> $a - строка - значение этой переменной либо 1111, либо GR444
Я попросил показать полностью. Т. е. как вы формируете и присваиваете значение этой переменной тоже :-)


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.