【问题标题】:how to insert a query within a class?如何在类中插入查询?
【发布时间】:2016-04-25 12:06:54
【问题描述】:

我正在上一个班级,我想检查是否所有内容都已填写,如果所有内容都已填写,然后插入到数据库中,但我一直坚持如何在我的班级中插入,所以我希望你们能提供帮助我。我从来没有遇到过这个问题的任何错误。

代码如下:

<?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;
    }
}

已经感谢您的帮助。 如果您想从我这里获得更多代码,请询问。

【问题讨论】:

  • VALUES (:catName = catName) 应该读作VALUES (:catName) 并且使用异常会触发语法错误。 php.net/manual/en/pdo.error-handling.php - 你现在使用的是 UPDATE 语法,而不是 INSERT。
  • 嗯,我试过了,但似乎没有用
  • 啊,下面那个人;发布了答案,所以问他。我必须远离这个循环。
  • 所以,您不是在向其他人询问他的答案以及为什么它不起作用。如果不是 magic 答案,您是否正在等待另一个答案?
  • 很抱歉没有反应,但我正忙于我的小组,忘记了我在堆栈上的问题

标签: php class pdo


【解决方案1】:

您没有正确绑定参数。

更正的代码:

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

【讨论】:

  • yeah, I said that 6 mins. prior to this。也许 OP 只回答答案而不是 cmets。我确实相信我的解释更好。
  • 是的@Fred-ii-,你解释得很好。毫无疑问。但是,据我所知,我在那里发现了一些错误。因此,我发布了答案。
  • @Pupil 感谢您的回答,但它不起作用。我不知道为什么它不起作用。
猜你喜欢
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 2017-09-06
相关资源
最近更新 更多