gpt4 book ai didi

php - 插入查询成功但数据库出现错误?

转载 作者:行者123 更新时间:2023-11-29 18:25:06 25 4
gpt4 key购买 nike

Product_model.php

public function addProduct($info)
{
$sql_array = array(
$info['name'],
$info['SKU'],
$info['supplier_id'],
$info['type_id'],
$info['brand_id'],
$info['added_on'],
$info['initial_cost_price']);

$this->db->trans_start();
//INSERT
$sql = "INSERT INTO
product(
name,
SKU,
supplier_id,
type_id,
brand_id,
added_on,
initial_cost_price
)
VALUES(
?,
?,
?,
?,
?,
?,
?
)
";
$query = $this->db->query($sql, $sql_array);
$insert_id = $this->db->insert_id();

$this->addProductVariant($insert_id, $info);
$this->db->trans_complete();

if ($this->db->trans_status() === FALSE)
{
return 'transaction failed';
} return TRUE;
}

public function addProductVariant($product_id, $info)
{
$sql_array = array(
$product_id,
$info['variant_name'],
$info['variant_SKU'],
$info['barcode'],
$info['wholesale_price'],
$info['buy_price'],
$info['retail_price'],
$info['description'],
$info['initial_quantity'],
$info['added_on'],
$info['last_updated']
);

$sql = "INSERT INTO
product_variant(product_id,
name,
SKU,
barcode,
wholesale_price,
buy_price,
retail_price,
description,
qty_on_hand,
created_on,
last_updated
)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$query = $this->db->query($sql, $sql_array);
}

当我在表单上点击“提交”时,页面会重新加载并显示此错误:

Error Number: 1048

Column 'name' cannot be null

INSERT INTO product_variant(product_id, name, SKU, barcode, wholesale_price, buy_price, retail_price, description, qty_on_hand, created_on, last_updated ) VALUES(71, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2017-09-17 10:45:12', '2017-09-17 10:45:12')

Filename: D:/xampp/htdocs/svcc_inv/system/database/DB_driver.php

Line Number: 691

但是当我检查数据库时,插入是成功的。新的记录就在那里。

我尝试回显 $sql_array 中的值,并得到了正确的结果。我不知道为什么错误说它们为空。我猜测可能是因为我将整个过程分为两种方法,其中一种方法在另一种方法内部,但我还不知道这是怎么回事。

最佳答案

在您的示例中,$info['variant_name']为NULL,您需要从addProduct函数的开头转储$info,什么它包含吗,像这样:

public function addProduct($info)
{
var_dump($info);
exit;
...
}

另外,我想使用 $this->db->trans_status() 那么你需要使用 $this->db->trans_begin()< 手动运行事务 而不是 $this->db->trans_start(),如下所示:

$this->db->trans_begin();

$sql_array = array(
$info['name'],
$info['SKU'],
$info['supplier_id'],
$info['type_id'],
$info['brand_id'],
$info['added_on'],
$info['initial_cost_price']);

$this->db->trans_start();
//INSERT
$sql = "INSERT INTO
product(
name,
SKU,
supplier_id,
type_id,
brand_id,
added_on,
initial_cost_price
)
VALUES(
?,
?,
?,
?,
?,
?,
?
)
";
$query = $this->db->query($sql, $sql_array);
$insert_id = $this->db->insert_id();

$this->addProductVariant($insert_id, $info);

if ($this->db->trans_status() === false) {
$this->db->trans_rollback();
return 'transaction failed';
} else {
$this->db->trans_commit();
return true;
}

关于php - 插入查询成功但数据库出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46260261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com