0

2 つのテーブルがあります。1 つは「tid」(自動インクリメント) と「name」(タグの名前) を格納する「タグ」です。2 番目のテーブル「tags_data」には、各タグのデータが格納されます。このテーブルには、フィールド「tid」(最初のテーブルから) と他のいくつかのフィールドがあります。

これは、人々が私のウェブサイトのコンテンツにタグを付けることができるようにするためです。コンテンツにタグを付けるとき、そのタグが最初のテーブルに既に存在するかどうかを最初に確認したいと思います。存在しない場合は、タグを DB に挿入し、tid を使用して 2 番目のテーブルに挿入します。これまでのところ、この部分は機能しています。

問題は、タグが既に DB に存在する場合です。既存の tid を取得して、2 番目のクエリで使用したいと考えています。

これは私がこれまでに持っているコードです:

    // check if tag already exists
$tagexists = "SELECT COUNT(*) as cnt FROM tags WHERE 'name' = '$usetag' LIMIT 1";
$results = mysql_query($tagexists) or die('Invalid query: ' . mysql_error());
if ($results['cnt'] == 0) {
    // tag is not yet in DB
    $tagquery1 = "INSERT INTO tags (name) VALUES ('$usetag')";
    $result = mysql_query($tagquery1) or die('Invalid query: ' . mysql_error());
    $lastid = mysql_insert_id();
    $tagquery2 = "INSERT INTO tags_data (tid, nid, uid) VALUES ($lastid, $nid2, $uid)";
    $result = mysql_query($tagquery2) or die('Invalid query: ' . mysql_error());
} else {
    // tag is already in DB, grab the tid
    $grabtid = "SELECT tid FROM tags WHERE 'name' = '$usetag' LIMIT 1";
    $results = mysql_query($grabtid) or die('Invalid query: ' . mysql_error());
    $row = mysql_fetch_array($results);
    $lastid = $row['tid'];
    $tagquery2 = "INSERT INTO tags_data (tid, nid, uid) VALUES ($lastid, $nid2, $uid)";
    $result = mysql_query($tagquery2) or die('Invalid query: ' . mysql_error());        
}

タグが既に存在するかどうかを確認する方法に問題があります。COUNT を使用してオンラインでガイドに従っていましたが、正しく機能していないようです。

4

2 に答える 2

1

$results['cnt'] == 0間違っている。あなたは結果を得ることを忘れています。($results はリソース ID です。)

if(mysql_result($results) == 0){

同様に、if既存のデータを取得する の 2 番目の部分にもそれがありません。そこで使いたい$data = mysql_fetch_assoc($result);

于 2012-10-31T17:36:17.993 に答える
1

あなたのコードは間違っていると思います

$tagexists = "SELECT COUNT(*) as cnt FROM tags WHERE 'name' = '$usetag' ";
$res = mysql_query($tagexists) or die('Invalid query: ' . mysql_error());
$results = mysql_fetch_assoc($res);
if ($results['cnt'] == 0) {
    // tag is not yet in DB
    $tagquery1 = "INSERT INTO tags (name) VALUES ('$usetag')";
    $result = mysql_query($tagquery1) or die('Invalid query: ' . mysql_error());
    $lastid = mysql_insert_id();
    $tagquery2 = "INSERT INTO tags_data (tid, nid, uid) VALUES ($lastid, $nid2, $uid)";
    $result = mysql_query($tagquery2) or die('Invalid query: ' . mysql_error());
} else {
    // tag is already in DB, grab the tid
    $grabtid = "SELECT tid FROM tags WHERE 'name' = '$usetag' LIMIT 1";
    $results = mysql_query($grabtid) or die('Invalid query: ' . mysql_error());
    $row = mysql_fetch_array($results);
    $lastid = $row['tid'];
    $tagquery2 = "INSERT INTO tags_data (tid, nid, uid) VALUES ($lastid, $nid2, $uid)";
    $result = mysql_query($tagquery2) or die('Invalid query: ' . mysql_error());        
}
于 2012-10-31T17:38:29.760 に答える