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

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

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

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

$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)

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

Ответы [ 5 ]

3 голосов
/ 22 сентября 2009

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

ALTER TABLE tags  ADD PRIMARY KEY (tag);

UPDATE

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

сделать это

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

в test.php

ОБНОВЛЕНИЕ 2

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

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

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

2 голосов
/ 22 сентября 2009

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

0 голосов
/ 22 сентября 2009

если вы используете 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 голосов
/ 22 сентября 2009

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

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 голосов
/ 22 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...