Я хочу, чтобы этот 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)
СПАСИБО КАЖДЫЙ, ЧТО Я ПРИНИМАЮ, ЧТО РАБОТАЕТ, НО ДРУГИЕ ПРОБЛЕМЫ ПРИНИМАЮТ, НО ЭТО РАЗНОЕ ВОПРОС
попробуйте этот запрос, чтобы добавить первичный ключ в таблицу тэгов
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 (тег);
Обратите внимание, что если у вас уже есть дубликаты, вам сначала нужно удалить их.
Конечно, это легко. Добавьте уникальный индекс в столбец "тег" в базе данных или сделайте его первичным ключом.
Если вы используете 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`
Вы говорите, что структура вашей таблицы выглядит следующим образом:
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);
Ваша проблема - это идентификатор, вероятно, будет основным ключом, а не тегом. как я уже упоминал выше, ваш код будет работать, только если тег был основным ключом в таблице