Aynı etiket PHP ve MySQL ile veritabanı zaten olmadığını nasıl kontrol edebilirim?

5 Cevap php

Ben bu script bir yinelenen etiket eklemek değil saymak eklemek gerekir eğer öyleyse aynı kelime girildiğinde görmek için kontrol etmek istiyorum.

Girilen etiketi, yeni bir etiket Ve eğer o veritabanına ekleyelim.

Bazı biri bana bunu düzeltmek yardımcı olabilir misiniz?

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

TEŞEKKÜRLER HERKES çalışması için var AMA BİR SORUN KADAR GELDİ AMA FARKLI BİR SORU VAR

5 Cevap

Lütfen etiketleri tabloya birincil anahtar eklemek için bu sorguyu deneyin

ALTER TABLE tags  ADD PRIMARY KEY (tag);

UPDATE

Sadece phpmyadmin çalıştırmak OR

Bunu yapmak

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

Bir test.php içinde

UPDATE 2

Bu zaten bir birincil anahtar var demektir Tamam, bu sorguyu kullanarak artık etiketlemek için benzersiz bir dizin ekleyebilirsiniz ..

TABLO etiketleri UNIQUE (etiketi) ADD ALTER;

Zaten çiftleri varsa, o zaman ilk bunları kaldırmak gerekir unutmayın.

Tabii, bu kolay. Veritabanındaki 'etiketi' sütunu benzersiz dizin eklemek veya birincil anahtar yapmak.

Sorunun kimliği muhtemelen etiketlemek değil, birincil anahtar olacaktır. i kod yukarıda belirtildiği gibi etiket masaya birincil anahtar ise sadece çalışmak istiyorum

MySQL kullanıyorsanız eğer, INSERT ON DUPLICATE KEY sözdizimi kullanabilirsiniz, sizin tagname birincil anahtar (veya benzersiz) olması şartıyla

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

tablo kullanımı ile ilgili bir birincil anahtar eklemek için:

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

birincil anahtar olarak tagname kullanabilirsiniz çünkü olsa bir id sütunu gerekmez

ALTER TABLE `tags` DROP COLUMN `id`

Eğer aşağıdaki gibi bir tablo yapısı olduğunu söylüyorlar:

id    tag    count

Hangi birincil anahtar olarak tag olmadıkça geçerli sorgu çalışmaz anlamına gelir. Bu durum buysa, muhtemelen birincil anahtar olarak id sütunu kullanarak ediyoruz.

Bu yüzden sakin ol ve sadece etiket zaten orada olup olmadığını görmek için kontrol edin.

Eğer öyleyse, güncelleyecektir. Değilse, bunu ekleyin.

//--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);