Как я могу проверить, был ли такой же тег уже в базе данных с PHP и Mysql?

0

Я хочу, чтобы этот script проверял, было ли введено одно и то же слово, если оно должно добавить его в счетчик, не добавляя повторяющийся тег.

И если введенный тег является новым тегом, то пусть он добавит его в базу данных.

Может кто-нибудь помочь мне исправить это?

$tag = mysql_real_escape_string($_POST['tag']);
$query = "INSERT INTO tags (tag, count) VALUES ('$tag', 1)
          ON DUPLICATE KEY UPDATE count = count+1";
if (!mysql_query($query, $dbc))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($dbc)

СПАСИБО КАЖДЫЙ, ЧТО Я ПРИНИМАЮ, ЧТО РАБОТАЕТ, НО ДРУГИЕ ПРОБЛЕМЫ ПРИНИМАЮТ, НО ЭТО РАЗНОЕ ВОПРОС

  • 0
    Какую ошибку вы получаете? Как выглядит ваш стол? Что еще ты пробовал?
  • 1
    вот как в основном выглядит моя таблица: id tag count
Показать ещё 4 комментария
Теги:
database

5 ответов

3

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

ALTER TABLE tags  ADD PRIMARY KEY (tag);

UPDATE

Просто запустите его в phpmyadmin OR

сделайте это

$sql = "ALTER TABLE tags  ADD PRIMARY KEY (tag)";
$result = mysql_query($sql);

в test.php

ОБНОВЛЕНИЕ 2

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

ALTER TABLE теги ADD UNIQUE (тег);

Обратите внимание, что если у вас уже есть дубликаты, вам сначала нужно удалить их.

  • 0
    где я могу добавить это?
  • 0
    проверьте обновление на мой ответ.
Показать ещё 2 комментария
2

Конечно, это легко. Добавьте уникальный индекс в столбец "тег" в базе данных или сделайте его первичным ключом.

  • 0
    Как мне это сделать?
  • 0
    Это можно сделать с помощью любого инструмента, который вы используете для управления базой данных, например, командного инструмента MySQL dev.mysql.com/doc/refman/5.4/en/mysql.html или phpMyAdmin phpmyadmin.net/home_page/index.php
0

Если вы используете mySQL, вы можете использовать синтаксис INSERT ON DUPLICATE KEY, если ваш тэг является первичным ключом (или уникальным)

INSERT INTO `tags` (`tag`, `count`)
VALUES ($tag, 1)
    ON DUPLICATE KEY UPDATE `count`=`count`+1;

чтобы добавить первичный ключ в таблицу:

ALTER TABLE `tags` ADD PRIMARY KEY (`tag`)

вам не нужен столбец id, потому что вы можете использовать тэг как первичный ключ

ALTER TABLE `tags` DROP COLUMN `id`
0

Вы говорите, что структура вашей таблицы выглядит следующим образом:

id    tag    count

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

Так что не стесняйтесь и просто проверяйте, есть ли тег уже там.

Если да, обновите счетчик. Если нет, добавьте его.

//--grab the tag
$tag = mysql_real_escape_string($_POST['tag']);

//--see if the tag already exists and potentially what the current count is
$query = "SELECT id, count FROM tags WHERE tag='$tag'";
$result = mysql_query($query);

//--if there is a row, that means the tag exists
if(mysql_num_rows($result))
{
//--pull out the tag ID and the current count and increment by one.
  $tag_info = mysql_fetch_array($result);
  $tag_info_id = $tag_info["id"];
  $tag_info_count = $tag_info["count"] + 1;

//--update the table with the new count
  $sql_update_cnt = "UPDATE tags SET count='$tag_info_count' 
                            WHERE id='$tag_info_id'";
  mysql_query($sql_update_cnt);

  echo "$tag now with $tag_info_count instances";
}
else
{
//--tag is not there, so insert a new instance and 1 as the first count
  $query = "INSERT INTO tags (tag, count) VALUES ('$tag', 1)";
  mysql_query($query);

  echo "1 record added";
}

mysql_close($dbc);
  • 0
    Я пробую ваше решение, вот как настроена моя база данных: теги <pre> CREATE TABLE (id int (11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), тег varchar (100) NOT NULL, count int (11) NOT NULL DEFAULT '0'); </ pre> по какой-то причине теперь моя база данных не будет обновляться :(
  • 0
    Исправлена ошибка, когда запрос на создание нового тега был пропущен. Попробуй.
0

Ваша проблема - это идентификатор, вероятно, будет основным ключом, а не тегом. как я уже упоминал выше, ваш код будет работать, только если тег был основным ключом в таблице

Ещё вопросы

Сообщество Overcoder
Наверх
Меню