2009-12-06 66 views
-3

首先讓我解釋一下,我有這個腳本應該讓用戶輸入用逗號分隔的多個標籤,例如html, css, php, mysql,並將每個標籤存儲在數據庫中,並將其與標籤中的問題關聯起來。PHP/MySQL - 用戶提交時存儲的數據不正確?

但由於某些原因,標籤與questions_tags表正確無關,以便更好地說明我所談論的內容以及我想要發生的事情,請參閱下面的表格佈局?

我希望我解釋正確嗎?

有人能給我幾個我需要在腳本中改變的例子,以便解決這個問題嗎?

這裏是下面發生的事情。

表:questions_tags

id tag_id users_questions_id 
1 1  3 

表:標籤

id tag 
1 html 
2 css 
3 php 
4 mysql 

這是我想下面的情況發生。

表:questions_tags

id tag_id users_questions_id 
1 1  3 
2 2  3 
3 3  3 
4 4  3 

表:標籤

id tag 
1 html 
2 css 
3 php 
4 mysql 

這裏是我下面的MySQL表。

CREATE TABLE questions_tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
tag_id INT UNSIGNED NOT NULL, 
users_questions_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 

CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
tag VARCHAR(255) NOT NULL, 
PRIMARY KEY (id) 
); 

這是我的腳本如下。

<?php 
require_once ('./mysqli_connect.php'); 

if (isset($_POST['submitted'])) { 
     $mysqli = new mysqli("localhost", "root", "", "sitename"); 
     $dbc = mysqli_query($mysqli,"SELECT questions_tags.*, tags.* FROM questions_tags, tags"); 
    if (!$dbc) { 
     print mysqli_error($mysqli); 
    } 
$page = '3'; 

$tag = mysqli_real_escape_string($mysqli, $_POST['tag']); 

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT questions_tags.*, tags.* FROM questions_tags INNER JOIN tags ON tags.id = questions_tags.tag_id WHERE questions_tags.users_questions_id='$page'"); 
if(mysqli_num_rows($dbc) >= 0){ 

if (isset($_POST['tag'])){ 
    $tags = explode(",", $_POST['tag']); 

    for ($x = 0; $x < count($tags); $x++){ 

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$clean_url = mysqli_real_escape_string($mysqli, $page); 

$query1 = "INSERT INTO tags (tag) VALUES ('" . $tags[$x] . "')"; 


if (!mysqli_query($mysqli, $query1)) { 
    print mysqli_error($mysqli); 
    return; 
} 

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT id FROM tags WHERE tag='" . $tags[$x] . "'"); 

    } 
} 

if (!$dbc) { 
    print mysqli_error($mysqli); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
     $id = $row["id"]; 
    } 
} 

$query2 = "INSERT INTO questions_tags (tag_id, users_questions_id) VALUES ('$id', '$page')"; 

if (!mysqli_query($mysqli, $query2)) { 
    print mysqli_error($mysqli); 
    return; 
} 

echo "$tag has been entered"; 

    if (!$dbc) { 
      print mysqli_error($mysqli); 
    } 
} 
mysqli_close($mysqli); 
} 
?> 
+6

這是你幾乎類似的代碼問第三個問題。你爲什麼不開始學習PHP和MySQL _before_你想克隆stackoverflow? – halfdan 2009-12-06 13:34:15

+0

如果你的答案沒有生產力,那就把它留給你自己吧,不要它不是一個stackoverflow的克隆。 – MyHeadHurts 2009-12-06 13:37:03

+1

他是對的......迄今爲止,我已經看到了多個相同的問題。當然,他不是非常委婉的,但你必須認識到Stack Overflow不會爲你編程你的站點。 – 2009-12-07 02:35:19

回答

0

你最好的選擇是:

  1. 記錄到的phpMyAdmin你的MySQL服務器
  2. 手動條目添加到questions_tags列
  3. 副本和PHPMyAdmin中創建的MySQL查詢粘貼到你的php腳本

瞧!

0

嘗試

INSERT INTO questions_tags (tag_id, users_questions_id) VALUES ($id, $page) 
相關問題