Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Странный SQL Запрос
 
 автор: Zilog   (18.03.2006 в 01:12)   письмо автору
 
 

Есть таблица, в которой записаны по русски имена цветов, например "Золото матовое", "Никель", и т.д.

Написал функцию - должна возвращать ID цвета по его имени.
Но не работает, собака, причем на вход гарантировано подается правильное значение.


function GetColorID($NAME) 
{
   if (!db_connect()) return;
  $q = 'SELECT * FROM frcolors WHERE NAME = "$NAME"';
  $r = mysql_query($q) or die ("Запрос не удался ".mysql_error());
  $f= mysql_fetch_array($r);
  $id = $f["ID"];
  return $id;
}


Кроме того, если написать WHERE NAME = "Имя цвета"' - запрос отрабатывает нормально.
Возникает ощущение, что у переменной какай-то друга кодировка.
В чем может быть дело??

   
 
 автор: CrazyAngel   (18.03.2006 в 01:18)   письмо автору
 
   для: Zilog   (18.03.2006 в 01:12)
 

БД в какой кодировке?

И задавать вопросы по MySQL лучше в том месте где надо

например тут
http://softtime.ru/forum/index.php?id_forum=3


попробуй вместо " '

   
 
 автор: CrazyAngel   (18.03.2006 в 01:22)   письмо автору
 
   для: CrazyAngel   (18.03.2006 в 01:18)
 

если name число то вообще убери кавычки

   
 
 автор: Zilog   (18.03.2006 в 01:38)   письмо автору
 
   для: CrazyAngel   (18.03.2006 в 01:18)
 

кодировка БД 1251еслия не ошибаюсь,

NAME - это слово, иногда несколько слов. кавычки нужны.

   
 
 автор: kasmanaft   (18.03.2006 в 05:16)   письмо автору
 
   для: Zilog   (18.03.2006 в 01:38)
 

потому как вы поставили переменную в одинарные кавычки, где она не интерпретируется....
можно вот так
  $q = "SELECT * FROM frcolors WHERE NAME = '".$NAME."';";

к тому же забыли в конце запроса точку с запятой...

   
 
 автор: Trianon   (18.03.2006 в 11:43)   письмо автору
 
   для: kasmanaft   (18.03.2006 в 05:16)
 

Можно и проще:
  $q = "SELECT * FROM frcolors WHERE NAME = '$NAME'"; 

Точка с запятой в одиночных запросах, выполняемых через mysql_query() не требуется.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования