SQL запись в таблицу

SN
На сайте с 04.07.2013
Offline
84
424

Вопрос очень простой , но объясняю я очень плохо.

Есть таблица tab. В ней 4 столбца:

1. id

2. ip

3. category

4. page

При запуске php скрипта выполняется такое действие:

mysql_query ("INSERT INTO tab (ip, category, page) VALUES ('$ip', '$category', '$page')");

id присваивается автоматически порядковый номер.

Задача состоит в следующем. Запись в таблицу должна произойти только в том случае, если еще нет такой записи (с аналогичными значениями в столбцах ip, category, page).

Т.е. сначала проверяем нет ли записи с аналогичным сочетанием значений ip, category, page, и только потом записываем.

Например у нас

$ip=127.0.0.1

$category="auto"

$page="BMV"

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

Хотелось бы решить проблему средствами MySQL а не PHP

AH
На сайте с 27.10.2015
Offline
29
#1

както так можно


$query = "SELECT * FROM $tableob WHERE id=$id AND category=$catecory";
/*и в этом духе скока надо*/
$res = mysql_query($query) or die(mysql_error());
/* проверяем есть ли токая строка */
$number = mysql_num_rows($res);
if ($number == 0) {
$rr = "azmeb.hol.es/viev.php?id=$id";
header('Location: http://'.$rr);
/* ну или сообщение какое выведи*/
} else {
$query = "INSERT INTO tab (ip, category, page) VALUES ('$ip', '$category', '$page')";

как то так

SUPER Bitcoin кран без таймера! - YOURCOINS.PRO (https://yourcoins.pro/index.php?aff=1518292697)
D
На сайте с 14.01.2007
Offline
153
#2

сделать уникальный индекс из ip, category, page

AH
На сайте с 27.10.2015
Offline
29
#3
Dinozavr:
сделать уникальный индекс из ip, category, page

чувствую меня сейчас научат. Жду разъяснений

Хелпзонович
На сайте с 15.06.2005
Offline
133
#4

ALTER TABLE `tab`
ADD UNIQUE INDEX `ex_icp` (`ip`, `category`, `page`);

И поменять insert в скрипте на insert ignore

Вы там держитесь! Хорошего вам настроения. Здоровья.
D
На сайте с 14.01.2007
Offline
153
#5
ArbitHome:
чувствую меня сейчас научат. Жду разъяснений

для этого надо сначала тон поменять

L
На сайте с 07.12.2007
Offline
351
#6
ArbitHome:
чувствую меня сейчас научат.

А вам и надо учится, учиться и учится.

При большом количестве одновременных обращений к БД для записи, ваш код не будет работать правильно.

AH
На сайте с 27.10.2015
Offline
29
#7
для этого надо сначала тон поменять

прошу прощения, просто стало интересно

А вам и надо учится, учиться и учится.
При большом количестве одновременных обращений к БД для записи, ваш код не будет работать правильно.

так я только за ) никогда не помешает узнать более простое решение.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий