[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка Запроса на добавления в базу
715kg
$insert = mysql_query("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')");


А подскажите теперь как сделать чтобы если такой запрос был в базе, он бы его просто не добавлял. А если нету, то добавлял. Как проверку сделать для выше указанного кода? Заранее спасибо.



Спустя 7 минут, 30 секунд (6.03.2012 - 17:42) Visman написал(а):

Спустя 19 минут, 41 секунда (6.03.2012 - 18:01) 715kg написал(а):
Что то не получается.(((

Может if условия создать какие?

Спустя 3 минуты, 4 секунды (6.03.2012 - 18:04) Guest написал(а):
Делай SELECT с такими параметрами, а потом mysql_num_rows и запрос

Спустя 50 минут, 59 секунд (6.03.2012 - 18:55) 715kg написал(а):
Все так же я в провале. Перечитал все. как только не пробывал не получается((

А как еще можно сделать запрет на дублирование через php ?

Надо чтобы если такая запись уже есть, он выбивал сообщение ти по такая запись существует.

И не удалял бы ее и не перезаписывал заново. Просто выбил сообщение и оставил запись в базе как есть.

Спустя 11 минут, 10 секунд (6.03.2012 - 19:07) Visman написал(а):
715kg, ну что тут не ясного?
Делай селект с условием
"WHERE server_ip = '$ip:$port'"

Если запрос вернет строку, значит она уже есть в таблице.

Спустя 1 час, 15 минут, 18 секунд (6.03.2012 - 20:22) 715kg написал(а):
Извините, как бы вам объяснить. Я не очень разбираюсь в php
Я скорее делаю методом тыка. Вот у меня код

$ip=$_GET['ip'];
$port=$_GET['port'];

$insert = mysql_query("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись в базу
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод из базы.


Если не сложно Отредактируйте код. Куда подставить. Я так понял нужно создать еще один

 $q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод из базы.


????

Спустя 17 минут, 10 секунд (6.03.2012 - 20:39) Visman написал(а):
Цитата (715kg @ 7.03.2012 - 01:22)
dbquery

Что это за функция? Самописная? Если да, то запросы mysql_query использовать не следует, следует использовать запросы dbquery.
Сначала идет запрос
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод из базы.

Потом проверка результата. Но какую функцию тут использовать не ясно, так как самописные методы используемые у тебя мне не известны.
Потом идет запись в таблицу, если проверка показала, что в таблице нет таких данных
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись в базу

Спустя 19 минут, 35 секунд (6.03.2012 - 20:59) 715kg написал(а):
Да. Функция самописная. Взял из другого движка игровых мониторингов.

Но не чего не работает. Вот как поставил код

$ip=$_GET['ip'];
$port=$_GET['port'];

$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись


Обращаюсь к файлу по адресу index.php?ip=1.1.1.1&port=2222
Он вносит Ип и порт в базу и сразу выкидывает информацию на картинке.

Но стоит обновить еще раз эту картинку, в базе появляется еще один такой же запрос. Если выдавать такие баннеры и все будут ставить себе на сайт, каждый будет заходить, ему будет загружаться картинка по данному запросу, то в базе будет полный мусор.

Я все перепробовал. Он все равно дубликаты в базу сует(

Спустя 10 минут, 32 секунды (6.03.2012 - 21:09) Visman написал(а):
Зачем я жирным шрифтом выделил текст? В нем вся соль!
Какая функция у тебя обрабатывает ответы от dbquery?

Спустя 14 минут, 53 секунды (6.03.2012 - 21:24) 715kg написал(а):
Она же вроде и обрабатывает.

Запутал я вас совсем. Я сам толком объяснить не могу(((

Работает на 2х функциях

dbquery
И так же на
mysql_query

Но он не че не проверяет. Обновил в браузере, он запишет выведет. еще раз обновил он опять Запишет выведет. раз 20 обновил, потом в базу заходишь и клаза на лоб лезу 20 записей с одним и тем же запросом.

Спустя 2 минуты, 7 секунд (6.03.2012 - 21:26) Visman написал(а):
Функцию dbquery покажи.

Спустя 7 минут, 57 секунд (6.03.2012 - 21:34) 715kg написал(а):
Возможно вот она

// MySQL функции
function dbquery($query) {
$result = @mysql_query($query);
if (!$result) {
echo mysql_error();
return false;
} else {
return $result;
}
}

Спустя 2 минуты, 38 секунд (6.03.2012 - 21:37) Visman написал(а):
Ясно.
Если после этого запроса
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод

функция mysql_num_rows($q) будет > 0
значит в таблице уже есть такая запись.

Спустя 30 минут, 28 секунд (6.03.2012 - 22:07) 715kg написал(а):
Поставил вот так...

$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
if (mysql_num_rows($q)>0)
{
echo "";
}
else
{
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись
}


Все получилось теперь не дублирует. Но появилась маленькая проблемка.

Теперь когда обращаешься к баннеру, нужно 2 раза обновить.

То есть один раз обновляешь, он записывает в базу и выдает пустой баннер. Обновляешь второй раз, он уже выдает с инфой.

Можно ли сделать чтобы было все сразу. Проверил, записал, выдал. За 1 запрос к баннеру?

Спустя 9 минут, 46 секунд (6.03.2012 - 22:17) 715kg написал(а):
Решил. Так

$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
if (mysql_num_rows($q)>0)
{
echo "";
}
else
{
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись
}

[u]$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод[/u]


Подставил вниз еще вывод. Теперь он сразу Проверяет, записывает, выводит. Должно быть увеличились запросы к базе. Так можно делать?? Или есть другой способ?

Спустя 7 часов, 24 минуты, 11 секунд (7.03.2012 - 05:41) Visman написал(а):
Цитата (715kg @ 7.03.2012 - 03:17)
Так можно делать??

Можно.
Цитата (715kg @ 7.03.2012 - 03:17)
Или есть другой способ?

Есть, так как у тебя есть все данные до третьего запроса и он лишний.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.