проблема с UPDATE

Ринат

Новичок
проблема с UPDATE

доброй ночи
возникают проблемы при UPDATE
после запроса ячейка становится пустой, после UPDATE, mysql_error() - ошибки нет
запрос

land_id int(11) unsigned PRI NULL auto_increment
land_name varchar(100) UNI

PHP:
$query = "UPDATE  land 
	  SET land_name= '$land_name'			  WHERE land_id = '$land_id'";
версия MySQL 4.0.24-log
подскажите в чем дело или где почитать
простите за ликбез
 

dvp

Новичок
Во-первых непонятно, почему PRIMARY KEY NULL
Во вторых, int в SQL не надо брать в кавычки
В третьих обязательно убедиться в том, что в переменной $land_name все кавычки экранированы.
В чётвёртых необходимо убедиться, что $land_id - целое число.

Я бы сделал это так:

PHP:
$query = 'UPDATE land SET land_name="'.mysql_escape_string($land_name).'" WHERE land_id='.(int)$land_id;
и если бы у меня что-то не получалось, то для того, чтобы выяснить причину, я бы посмотрел, что же за запрос отправляется к MySQL так:
PHP:
echo $query;
 

Ринат

Новичок
стоп, primary not null , все проэкраинировано, по поводу int без кавычек сейчас попробую
остальное сейчас погляжу

-~{}~ 24.08.05 23:40:

сделал, наступаю на те же грабли, надо было прсото запрос сам поглядеть, но работает
после того как убрал mysql_real_escape_string($_GET['land_name'])
с mysql_real_escape_string не работает,
пожайлуста поясните почему, раньше такого что-то не замечал когда делал
спасибо
 

Фанат

oncle terrible
Команда форума
а чего ж ты не "поглядел сам запрос" с mysql_real_escape_string и без?
сам бы и выяснил, в чём разница.
 

Ринат

Новичок
да я смотрел сразу
результыт был таковым
UPDATE land SET land_name= '' WHERE land_id = 2
то есть пустое значение, определенно я что-то не знаю, вопрос, где почитать почему так
 

Фанат

oncle terrible
Команда форума
то есть, ты хочешь сказать, что после mysql_real_escape_string значение становится пустым?

старик, я очень сильно обеспокоен твоим душевным здоровьем.
у тебя галлюцинаций никогда не было?
 

Ринат

Новичок
да я сам удивлен, нет галюцинаций не было
PHP:
$land_name = mysql_real_escape_string($_GET['land_name']);
$query = "UPDATE  land
	  SET land_name= '$land_name'
	  WHERE land_id = $land_id";
$result = query($query);
if($result) {
	print "UPDATE war erfolgreich ".$query;
}
else {
print $query.$mysql_error();
}
результат
UPDATE war erfolgreich UPDATE land SET land_name= '' WHERE land_id = 2

все тоже самое, но без mysql_real_escape_string
UPDATE war erfolgreich UPDATE land SET land_name= 'Russia123' WHERE land_id = 1

возможно тема уже исчерпала себя, но просто интересно такое поведение
 

Ринат

Новичок
вот это все так выглядит (
PHP:
include_once 'common_functions.php';
if (isset($_GET['land_name']) &&!empty($_GET['land_name'])) {	
     $land_name = mysql_real_escape_string($_GET['land_name']);
    if (connect($db_host, $db_user, $db_password, $db_name)) {
	   $query = "UPDATE  land
		   	    SET land_name= '$land_name'
			    WHERE land_id = $land_id";
         $result = query($query);
	    if($result) {
		print INFO_UPDATE.$query;
	     }
	     else {
		print $query.mysql_error();
	     }
    }
    else{
    print ERROR_MESSAGE12;
    }
}
else {
print "name ist leer";
}
 

Фанат

oncle terrible
Команда форума
в документации по [m]mysql_real_escape_string[/m]написано, когда она должна вызываться - до, или после коннекта
 

Фанат

oncle terrible
Команда форума
хех.
пардон, не написано =)
но из принципа её действия следует, что - после коннекта
 

Ринат

Новичок
Экранирует специальные символы в строке, используемой в SQL-запросе, принмимая во внимание КОДИРОВКУ СОЕДИНЕНИЯ
спасибо кажется вопрос решен...Фанат спасибо за помощь, буду знать...

-~{}~ 25.08.05 09:16:

отсюда можно понять ))
все работает. спасибо за помощь
 

Фанат

oncle terrible
Команда форума
Ну, я, всё-таки, разделяю юзер нотес и сам manual entry
требовать от человека, чтобы он чипрочитал все нотесы, которые пишут тоже далеко не титаны мысли - нельзя.
я так считаю. в смысле, не давал бы ссылку, если бы имел в виду комменты
 
Сверху