Ошибка: появление из ниоткуда иероглифов в названии столбца при запросе

Istamendil

Новичок
Ошибка: появление из ниоткуда иероглифов в названии столбца при запросе

Делаю регистрацию...
При запросе о добавлении данных в таблицу пишет, что нет столбца с иероглифичным названием, хотя у меня статически, латиницей, точно прописаны все столбцы. Размер названия поя вляющегося несуществующего столбца не совпадает с существующими...
Прямо делать не знаю что:confused: . Вот код:
PHP:
if(!count($err)){
  //adding to DB
  $mc=mysql_connect('localhost','root','');
  mysql_select_db('mydb',$mc);
  $ittm=mysql_query('select * from maintable where login=`'.$login.'`;',$mc);
  if($ittm!=0) die('login уже есть');
  $q=mysql_query('insert into infotable (`pas`,`name`,`surname`,`nik`,`pol`,`dtrd`,`gorod`) values ('.crypt($password,"salt").",'$name','$surname','$nik','$pol','$dtrd','$gorod');",$mc);
  if(!mysql_error()) die('ошибка');
   };
Работаю на денвере. php-5, mysql-4.1.8. Перепробовал, наверное, всё что возможно...
 

SelenIT

IT-лунатик :)
Istamendil

В запросе ошибка. Одно строковое поле не "закавычено".
 

GoaMind

Новичок
"INSERT INTO infotable (`pas`,`name`,`surname`,`nik`,`pol`,`dtrd`,`gorod`) VALUES ('".crypt($password,"salt")."','".$name."','".$surname."','".$nik."','".$pol."','".$dtrd."','".$gorod."')"
 

Istamendil

Новичок
Спасибо.
Я правда, сегодня это сам нашёл (то есть подобрал...).
Наверное, не очень знаю синтаксис mysql:
из моих "Экспериментов" получается, что значения нельзя брать в `...
P.s. может и правда поситать официальное описание... А то только Лю Томпсон читал, да и то "Разработка web-приложений ...". Ещё раз спавибо...
 

SelenIT

IT-лунатик :)
Istamendil

Эксперименты не врут. Но значения можно брать в ''. Строковые значения в '' брать нужно. "Незакавыченные" строки MySQL интерпретирует как названия столбцов.

А в исходном варианте твоего запроса результат функции crypt "закавычен" не был. Поэтому MySQl искал и не находил столбец с таким именем. Ошибку было бы легко заметить, просто выведя готовый запрос на экран.
 

Wicked

Новичок
некоторые рекомендации:
1)
if(!mysql_error()) die('ошибка');
заменить бы как минимум на
if(mysql_errno()) die('ошибка');
а еще лучше на что-нибудь с использованием trigger_error и/или exception'ов. В оригинальном же варианте это, мало того, что не информативно, так еще и работает нерпавильно :) И почему бы не добавить обработку ошибок для mysql_connect, mysql_select_db, и первного mysql_query ?

2) crypt($password,"salt")
вместо "salt" бы использовать что-нибудь менее осмысленное, хотя возможно ты специально так написал для форума.
 

Istamendil

Новичок
Wicked, все все все:
Спасибо за заботу! :)
В оригинале проверка есть, об этом я не забывал (кажется,
нигде не забыл...). С кавычками стараюсь тоже быть
осторожным. А не могли бы подсказать что есть exception'ы.
 
Сверху