【发布时间】:2017-09-05 15:46:57
【问题描述】:
我是 php 和 mysql 的新手,但是我必须使用 Silex 2.0 和 Symfony 在我的课程上做一个项目,并且我的 php 代码和数据库中产品表中的外键存在问题。
问题在于我的程序中保存函数的正确方法。
当我尝试添加或编辑新产品时,我的数据库中会发生以下情况 - 我得到 idCategory 和 idProducent = 0。:/
我在 ProductModel.php 中有一部分代码负责将其保存到数据库(到表产品):
public function addProduct($data) { $sql = 'INSERT INTO `products` ( `id`, `idCategory`, `idProducent`, `name`, `price_netto`, `price_brutto`, `desc` ) VALUES (NULL,?,?,?,?,?,?)'; $data['price_netto'] = $data['price_brutto'] * 1.22; $this->_db->executeQuery( $sql, array( $data['idCategory'], $data['idProducent'], $data['name'], $data['price_netto'], $data['price_brutto'], $data['desc']) ); }
public function saveProduct($data)
{
if (isset($data['id']) && ctype_digit((string)$data['id'])) {
$sql = "UPDATE
products
SET
idCategory = ?, idProducent = ?, name = ?,
price_netto = ?, price_brutto = ?, `desc` = ?
WHERE
id = ?";
$data['price_netto'] = $data['price_brutto'] * 1.22;
$this->_db->executeQuery(
$sql, array(
$data['idCategory'], $data['idProducent'], $data['name'],
$data['price_netto'], $data['price_brutto'], $data['desc'], $data['id'])
);
} else {
$sql = "INSERT INTO
`products` ( `id`, `idCategory`, `idProducent`, `name`, `price_netto`, `price_brutto`, `desc` )
VALUES
(NULL,?,?,?,?,?,?)";
$data['price_netto'] = $data['price_brutto'] * 1.22;
$this->_db->executeQuery(
$sql, array($data['id']), array(
$data['idCategory'], $data['idProducent'], $data['name'],
$data['price_netto'], $data['price_brutto'], $data['desc'])
);
}
}
这里有 ProductController.php [我认为这里很重要的部分]: https://codeshare.io/5w4rRD
还有来自 ProducentsModel.php 和 CategoriesModel.php 的函数:
public function getProducents()
{
$sql = 'SELECT * FROM producents;';
return $this->_db->fetchAll($sql);
}
public function getCategories()
{
$sql = 'SELECT * FROM categories;';
return $this->_db->fetchAll($sql);
}
很抱歉只给你链接,但这是我第一次接触 Stack Overflow,希望你能理解。
【问题讨论】:
-
可以分享一下你的表结构吗?
-
你使用的是 MyISAM 还是 InnoDB?
-
我正在使用 InnoDB
-
你缺少 FK 约束
标签: php mysql sql symfony silex