【问题标题】:Db Insert returns false in Prestashop 1.7 during install ModuleDb Insert 在安装模块期间在 Prestashop 1.7 中返回 false
【发布时间】:2020-12-02 00:18:04
【问题描述】:

我试图在我新建的表中插入一行,但它返回 false。查看 Prestashop Dev Docs,我可以看到 Db::getInstance 返回一个带有 function to insert 的对象。

我还可以看到在此示例中使用了pSQL() 方法,我假设在将输入注入 SQL 查询之前将其剥离。 (奇怪为什么他们不只是使用准备好的语句,而是无论如何)。

我当前的代码如下所示:

public function install()
{
    if(!\Db::getInstance()->execute(
        'CREATE TABLE IF NOT EXISTS `' . self::DB_PREFIX . 'iezon_portfolio` ('
        . ' `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,'
        . ' `img_link` VARCHAR (120) NOT NULL,'
        . ' `title` VARCHAR (80) NOT NULL,'
        . ' `description` VARCHAR(1024) NOT NULL,'
        . ' `created_on` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,'
        . ' `company_name` VARCHAR(30) NOT NULL,'
        . ' `company_url` VARCHAR(80) NOT NULL,'
        . ' `testimonial` VARCHAR(255) NOT NULL,'
        . ' PRIMARY KEY(`id`)'
        . ' ) ENGINE=' . self::SQL_ENGINE . ' DEFAULT CHARSET="utf8";'
    )) {
        # Table gets inserted fine
        return false;
    }

    if(!$this->create(
        '/img/prestashop-logo-1578759072.jpg',
        'My First Testimonial',
        'Lorem ipsum dolor sit amet conse ctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim.',
        'Lorem Ipsum',
        '#',
        'Lorem ipsum dolor sit amet conse ctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim.'
    )) {
        return false; # This returns false, no row was created
    };

    return parent::install();
}

public function create( $img, $title, $description, $company, $company_url, $testimonial )
{
    return \Db::getInstance()->insert(self::DB_PREFIX . 'iezon_portfolio', array(
        'img_link' => pSQL($img),
        'title' => pSQL($title),
        'description' => pSQL($description),
        'company_name' => pSQL($company),
        'company_url' => pSQL($company_url),
        'testimonial' => pSQL($testimonial)
    ));
}

似乎insert() 由于某种原因失败了。谁能指出我正确的方向?我是使用 Prestashop 的新手。

【问题讨论】:

    标签: php sql prestashop prestashop-1.7 myisam


    【解决方案1】:

    您不需要将DB_PREFIXinsert 方法一起使用,PrestaShop 前缀会自动添加

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多