2016-04-25 49 views
-1

我正在研究一個類,在那裏我想檢查是否一切都填滿了,如果一切都填充,然後插入到數據庫中,但我堅持如何在我的班級內插入,所以我希望你們可以幫我。我從來沒有得到這個問題的任何錯誤。如何在類中插入查詢?

下面是代碼:

<?php 


class clsCatCheck 
{ 

    private $catName; 

    public function __construct($catName) 
    { 
     $this->setCatName($catName); 
    } 

    public function setCatName($catName) 
    { 
     $connect = new PDO('mysql:host=hostname;dbname=dbname', "username", "password"); 

      $select = $connect->prepare('SELECT * FROM category'); 
      $row = $select->fetch(); 

      if (isset($_POST['addCat'])) { 
       if (empty($_POST['catName'])) { 
        throw new Exception('Geen categorienaam is ingevuld<br />'); 
       } 
       //if (strlen($_POST['catName'] <= 4)) { 
        // throw new Exception('De categorienaam moet minimaal 4 letters of langer zijn<br />'); 
       //} 
       if ($_POST['catName'] == $row[1]) { 
        throw new Exception('Deze categorienaam bestaat al<br />'); 
       } 
      } 
      else { 
       $query = $connect->prepare("INSERT INTO category (catName) VALUES (:catName = catName)"); 
       $query->bindParam(':catName', $_POST['catName'] ,PDO::PARAM_STR); 
       $query->execute(); 
      } 

     $this->catName = $catName; 
    } 

    public function getCatName() 
    { 
     return $this->catName; 
    } 
} 

已經感謝幫助。 如果你想要更多的代碼,只需要問。

+0

'VALUES(:catName = catName)'應該讀作VALUES(:catName)'和使用異常會引發一個語法錯誤。 http://php.net/manual/en/pdo.error-handling.php - 你現在使用的是UPDATE語法,而不是INSERT。 –

+0

嗯,我試過,但它似乎並沒有工作 –

+0

啊,那傢伙下面;張貼了一個答案,所以問他。我將不得不離開這個循環。 –

回答

2

您沒有正確綁定參數。

更正代碼:

$query = $connect->prepare("INSERT INTO category (catName) VALUES (:catName)"); 
$query->bindParam(':catName', $_POST['catName'] ,PDO::PARAM_STR); 
+0

[是的,我說了6分鐘。在此之前](http://stackoverflow.com/questions/36840118/how-to-insert-a-query-within-a-class#comment61250026_36840118)。也許OP只回答答案,而不是評論。我相信我的解釋更好。 –

+0

是的@ Fred-ii-,你解釋得很好。毫無疑問。但是,就我的小知識而言,我在那裏發現了一些錯誤。因此,我發佈了答案。 – Pupil

+0

@Pupil thx爲您的答案,但它不工作。我不是爲什麼它不工作。 –