2016-04-25 50 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为您的答案,但它不工作。我不是为什么它不工作。 –