2015-10-23 99 views
0

我在嘗試將我已將$標籤命名爲數組的數據輸入展開,然後將該數組插入表tags將標籤插入到數據庫中

我有一個類Global_有兩個功能:post_main() & post_tags()

在upload.php的文件I具有它們一前一後,如:

$Global_->post_main($_POST['title'], $_POST['subtitle'], $_POST['content'], time(), $_FILES["image-file"]["tmp_name"], $_POST['image-cred'], 
'0', '0', '0', $uid); 
$Global_->post_tags($_POST['tags'], $_POST['title']); 

在類的post_tags()功能如下:

function post_tags($tags, $title) { 
     require "database.php"; 
     $tag_array = explode(", ", $tags); 
     $tag_count = count($tag_array); 

     $pid_q = $db->prepare("SELECT * FROM `articles` WHERE `title` = '$title'"); 
     $pid_q->execute(); 
     $pid_i = $pid_q->fetch(); 
     $pid = $pid_i['id']; 

     for($i=0;$i < $tag_count;$i++) { 
      $t_stmt = $db->prepare("INSERT INTO `tags` (tag, pid) VALUES (:tag, :pid)"); 
      $t_stmt->bindParam(':tag', $tag_array[$i]); 
      $t_stmt->bindParam(':pid', $pid); 
      $t_stmt->execute(); 
     } 
    } 

tags佈局表是:id,tagpid - 這是它所連接的文章的ID。

出於某種原因,雖然文章的信息是這個數據沒有被插入到數據庫中。任何想法爲什麼?

+0

嘗試打印**「INSERT INTO'標籤'(tag,pid)VALUES($ tag_array [$ i],$ pid)**並在phpmyadmin上運行 –

+0

這是什麼情況:'for($ i = 0; $ i> = $ tag_count; $ i ++){'它應該是'for($ i = 0; $ i <= $ tag_count; $ i ++){' –

+0

它是否進入循環?爲什麼不參數化$ pid_q = $ db-> prepare(「SE LECT * FROM \'articles \'WHERE \'title \'='$ title'「);'?爲什麼不只是'foreach($ tag_count'? – chris85

回答

1

您的插入條件不會因爲這被執行(因爲$tag_count > 0按您的問題):

for($i=0;$i >= $tag_count;$i++) { 

它應該是

for($i=0;$i < $tag_count;$i++) { 
+0

WOW,這是一個錯過。只是更新它,仍然沒有運氣 - 你可以想到的任何其他? –

+0

@JakeMartinez只是登錄或打印插入SQL並嘗試運行到phpmyadmin,看看什麼它說,是否SQL構建是否正確 –

+0

@JakeMartinez我想你不應該更新你的問題的基礎上發佈的一些答案 –