2013-08-07 40 views
0

我有一段時間試圖找出我的查詢出了什麼問題,但無法弄清楚。我搜索互聯網和S.O發現幾個類似的答案,但似乎沒有工作。PDO插入不起作用

pLease看到攻擊代碼,並幫助我們確定問題所在。

public function add_page($page=array()){ 
global $db; 

//define page properties 
$page_name = $page['page_name']; 
$page_title= $page['page_title']; 
$page_meta_description = $page['page_meta_description']; 
$page_meta_keywords = $page['page_meta_keywords']; 
$page_meta_other = $page['page_meta_other']; 
$page_meta_other_2= $page['page_meta_other_2']; 
$page_url = $page['page_url']; 
$page_summary = $page['page_summary']; 
$page_content = $page['page_content']; 
$page_nav_item = $page['page_nav_item']; 
$page_nav_name= $page['page_nav_name']; 


    $q="INSERT INTO `simplecms`.`pages` (`page_id`, `page_name`, `page_title`, `page_meta_description`, `page_meta_keywords`, `page_meta_other`, `page_other_2`, `page_url`, `page_summary`, `page_content`, `page_nav_item`, `page_nav_name`) VALUES (?, ?, ?, ?, ?, ? , ? , ?, ?, ?, ?)"; 
    $query = $db->prepare($q); 

    $query->bindValue(1,$page_name); 
    $query->bindValue(2,$page_title); 
    $query->bindValue(3,$page_meta_description); 
    $query->bindValue(4,$page_meta_keywords); 
    $query->bindValue(5,$page_meta_other); 
    $query->bindValue(6,$page_meta_other_2); 
    $query->bindValue(7,$page_url); 
    $query->bindValue(8,$page_summary); 
    $query->bindValue(9,$page_content); 
    $query->bindValue(10,$page_nav_item); 
    $query->bindValue(11,$page_nav_name); 

    $query->execute(); 
    $r=$query->rowCount(); 

    echo $r; 



    //VALUES (NULL, 'Page Name', 'Page Title', 'Meta page description', 'google, ooogle ogle, userher', 'dymmy text qq', '', 'google.com', 'Small Summary', 'Ths is the big text', 'Yes', 'Google.com'); 


    /* 
    $query= $db->prepare("INSERT INTO `pages`(`page_name`, `page_title`, `page_meta_description`, `page_meta_keywords`, `page_meta_other`, `page_other_2`, `page_url`, `page_summary`, `page_content`, `page_nav_item`, `page_nav_name`) VALUES (?,?,?,?,?,?,?,?,?,?,?)"); 
    $query->execute(array(
     $page_name, 
     $page_title, 
     $page_meta_description, 
     $page_meta_keywords, 
     $page_meta_other, 
     $page_meta_other_2, 
     $page_url, 
     $page_summary, 
     $page_content, 
     $page_nav_item, 
     $page_nav_name 
     )); 
    $query->execute(); 

    $row = $query->rowCount(); 
    echo $row;*/ 

    /* 
    $query = "INSERT INTO `pages`(
        `page_name`, 
        `page_title`, 
        `page_meta_description`, 
        `page_meta_keywords`, 
        `page_meta_other`, 
        `page_meta_other_2`, 
        `page_url`, 
        `page_summary`, 
        `page_content`, 
        `page_nav_item`, 
        `page_nav_name` 
        ) VALUES(
        :name, 
        :title, 
        :desctription, 
        :keywords, 
        :meta1, 
        :meta2, 
        :url, 
        :summary, 
        :content, 
        :navitem, 
        :navname 

        )"; 
              //VALUE(?,?,?,?,?,?,?,?,?,?,?)"; 
    $q = $db->prepare($query); 
    $q->execute(array(
        ':name'     =>$page_name, 
        ':title'    =>$page_title, 
        ':desctription'   =>$page_meta_description, 
        ':keywords'    =>$page_meta_keywords, 
        ':meta1'    =>$page_meta_other, 
        ':meta2'    =>$page_meta_other_2, 
        ':url'     =>$page_url, 
        ':summary'    =>$page_summary, 
        ':content'    =>$page_content, 
        ':navitem'    =>$page_nav_item, 
        ':navname'    =>$page_nav_name 
     )); 
     */ 
    /*$q->bindValue(':name', $page_name, PDO::PARAM_STR); 
    $q->bindValue(':title', $page_title, PDO::PARAM_STR); 
    $q->bindValue(':desctription', $page_meta_description, PDO::PARAM_STR); 
    $q->bindValue(':keywords', $page_meta_keywords, PDO::PARAM_STR); 
    $q->bindValue(':meta1', $page_meta_other, PDO::PARAM_STR); 
    $q->bindValue(':meta2', $page_meta_other_2, PDO::PARAM_STR); 
    $q->bindValue(':url', $page_url, PDO::PARAM_STR); 
    $q->bindValue(':summary', $page_summary, PDO::PARAM_STR); 
    $q->bindValue(':content', $page_content, PDO::PARAM_STR); 
    $q->bindValue(':navitem', $page_nav_item, PDO::PARAM_STR); 
    $q->bindValue(':navname', $page_nav_name, PDO::PARAM_STR); 
    $q->execute();*/ 

    /*$r = $q->rowCount(); 

    if($r<1){ 
     echo "Oops no article is added <pre>"; 
     print_r($page); 
     echo "</pre>"; 
    }else{ 

     echo $r."Google"; 
    } 
    */ 

}

我曾嘗試幾乎任何/所有的方法我能想到了。我已經瀏覽了幾個小時的網絡並且不工作,在同一個班級中,我可以從數據庫中選擇和提取所有數據,但插入到數據庫中已成爲一場噩夢。

請幫忙。

+0

你的錯誤是什麼 – DevZer0

回答

2

page_idVALUES中缺失。你有12個字段,但11個佔位符和11個bindValue

如果page_idAUTO_INCREMENT,請不要將其包含在字段列表中。

+0

對page_id很好的捕獲,我剛剛添加,看看是否會解決問題,但它沒有,我刪除它,我只是忘了從列中刪除。正如你可以看到,如果我的其他代碼,我嘗試了很多不同的方式,它只是不插入。我有一個用戶類,代碼幾乎相同,但用戶類插入作品,但頁類插入不會工作,無論我做什麼。 – S01010011

+0

在'$ query-> execute()'之後插入'print_r($ query-> errorInfo());以查看MySQL抱怨的內容。 – ironcito

+0

非常感謝您,發現問題所在,我將page_url字段視爲唯一字段,而我輸入的數據在page_url中沒有數據,導致重複輸入錯誤。數組([0] => 23000 [1] => 1062 [2] =>重複條目'這是關鍵'page_url'的唯一字段')0 – S01010011