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

Форум PHP

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

 

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

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

тема: в чем разница кавычек?
 
 автор: Vincento   (15.09.2008 в 17:51)   письмо автору
 
 

Здравствуйте!
Проблема вот в чем. Хочу вести учет пользователей и идентифицирую их в базе по IP-адресам.написал код и возникла проблема

$addr = $_SERVER['REMOTE_ADDR'];
$queryyy = "SELECT * FROM vsecat WHERE ip='$addr' ";
$resss = mysql_query($queryyy);
$vrem = date("d.m.Y.H.i.s");
// если айпи новый то регистрируем его
if(!$resss)
{
$query1 = "INSERT INTO vsecat ( `id` , `ip`, `time`, `dost`)
             VALUES ('' ,  '$addr', '$vrem', 'da')";
@$res1 = mysql_query($query1);
}

проблема:
если в запросе
$queryyy = "SELECT * FROM vsecat WHERE ip='$addr' ";
я ставлю ' - такие кавычки у переменной $addr' то IP-адрес не заносится в базу если пользователь впервые зашел на страницу, а если ` - такие кавычки, то заносится, но впоследствии этот запрос не работает (в плане того что при наличии такого IP в базе он его не находит)
объясните пожалйуста в чем разница этих кавычек и как быть то?

  Ответить  
 
 автор: skor   (15.09.2008 в 18:02)   письмо автору
 
   для: Vincento   (15.09.2008 в 17:51)
 



$queryyy = "SELECT * FROM vsecat WHERE ip='".$addr."' ";

  Ответить  
 
 автор: Mehelson   (15.09.2008 в 18:11)   письмо автору
 
   для: Vincento   (15.09.2008 в 17:51)
 

>ставлю ' - такие кавычки, а если ` - такие кавычки

а если без кавычек?

>объясните пожалйуста в чем разница кавычек
http://ru2.php.net/manual/ru/language.types.string.php#language.types.string.parsing

  Ответить  
 
 автор: Vincento   (15.09.2008 в 19:28)   письмо автору
 
   для: Mehelson   (15.09.2008 в 18:11)
 

без кавычек как в первом варианте, не записывает нового пользователя

  Ответить  
 
 автор: Drago   (15.09.2008 в 19:28)   письмо автору
 
   для: Vincento   (15.09.2008 в 17:51)
 

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

Но проблема у вас не в кавычках.
Функция mysql_query():

Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель
 на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, 
mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение 
не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве 
затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не 
затронет ни одного ряда.


В вашем случае, если такого ip нет в базе, функция возвращает true, поскольку сам запрос был корректным.
И соответственно, проверка
if(!$resss)

будет всегда отрицательной.

Вам нужно проверять результат функции mysql_num_rows()


<?
$addr 
$_SERVER['REMOTE_ADDR']; 
$queryyy "SELECT * FROM vsecat WHERE ip='$addr' "
$resss mysql_query($queryyy); 
$rows mysql_num_rows($resss);
$vrem date("d.m.Y.H.i.s"); 
// если айпи новый то регистрируем его 
if($rows 1

$query1 "INSERT INTO vsecat ( `id` , `ip`, `time`, `dost`) 
             VALUES ('' ,  '
$addr', '$vrem', 'da')"
@
$res1 mysql_query($query1); 
}
?>

  Ответить  
 
 автор: Vincento   (15.09.2008 в 19:30)   письмо автору
 
   для: Drago   (15.09.2008 в 19:28)
 

Спасибо большое!!

  Ответить  
 
 автор: Trianon   (15.09.2008 в 19:43)   письмо автору
 
   для: Drago   (15.09.2008 в 19:28)
 

>В вашем случае, если такого ip нет в базе, функция возвращает true, поскольку сам запрос был корректным.
Функция таки вернет дескриптор результирующего набора строк. Пустого набора. В остальном всё верно.

  Ответить  
 
 автор: Drago   (15.09.2008 в 21:04)   письмо автору
 
   для: Trianon   (15.09.2008 в 19:43)
 

>Функция таки вернет дескриптор результирующего набора строк. Пустого набора. В остальном всё верно.
Да, конечно. Просто, в условиях такой проверки "if(!$resss)" дескриптор будет приравнен к true. :)

  Ответить  
Rambler's Top100
вверх

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