php - 将对象插入 MySQL 数据库字段

标签 php mysql codeigniter

我正在 codeigniter 中开发一个网络平台(第一次使用 CI)来计算越来越多的不同产品的报价。

我面临的问题是我的每个产品都有不同的 10 多个选项集,但我只想将这些数据保存到数据库中的一个表中。我之前为每个产品使用了不同的表格,允许表格结构代表不同的选项集,但是随着我们不断增长的产品范围,这不是很可扩展。

经过一些研究后,似乎有一种解决方案是使用“序列化”功能将每个产品的所有发布数据(来自报价表)存储在一列中,然后在我想使用此数据时反序列化...

序列化数据是最好的方法吗?有人能提供一个简单的例子来说明如何处理表单提交的插入/检索数据吗?

非常感谢

编辑:只会搜索产品类型或唯一 ID。我的想法是要有一个像“id、product_type、product_options”这样的表,其中包含序列化数据的 product_options?

编辑 2:采用 EAV 方法似乎很不错。我习惯于查询并返回要传递到 View 中的单个结果对象(例如,$query->quote_ref$query->quote_date)。当查询返回多行(每个属性一个)时,谁能指出正确的方向,说明如何使用单引号的数据?

最佳答案

正如您提到的,您不需要搜索序列化数据,那么是的,这种方法就可以了。我会选择 json_encode,因为这种形式的数据更易于阅读。

然后代码将取决于您的 DAL,但一个基本示例是:

$productOptions=array($_POST['option1'], $_POST['option2']);//etc will need to validate data
$databaseMapper->product_type='product type';
//your product_options column is suitable sized varchar
$databaseMapper->product_options=json_encode($productOptions);
$databaseMapper->save();

检索:

$databaseMapper->loadById(20);
//$productOptions is a standard php array
$productOptions = json_decode($databaseMapper->product_options, true);

编辑重新显示在您的 View 中。 这是 codeignitor 特定的(而以上不是)。 基于此处的代码:http://ellislab.com/codeigniter/user-guide/general/views.html

在你的 Controller 中:

//code similar to above to retrieve product options data, ideally contained within a model
$data['productOptions']=$productOptions;
$this->load->view('content', $data);

在你看来:

<ul>
<?php foreach ($productOptions as $option):?>

    <li><?php echo $option;?></li>

<?php endforeach;?>
</ul>

关于php - 将对象插入 MySQL 数据库字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658835/

相关文章:

php - 我如何建立动态组织结构图?

php - 解析错误 : syntax error, 在第 1 行出现意外的 $end

PHP-SQL : fetching results in round robin fashion

php - 如何使用 MySql (ID 1-20) 按 ID 排序?

mysql - Django:创建索引:非唯一,多列

database - 在codeigniter中动态添加数据库

php - php 和 codeigniter 中的主要类别 + 3 级子类别

php - Yii2 无法插入带有 id(PK) 的属性(FK)

php - 简单的mysql查询只返回一行

php - codeigniter 忽略部分搜索查询