【发布时间】: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