我是 Laravel 初学者,谁能告诉我如何将数组插入数据库?
Posted
技术标签:
【中文标题】我是 Laravel 初学者,谁能告诉我如何将数组插入数据库?【英文标题】:I am a Laravel beginner, can anyone tell me how I can insert an array into database? 【发布时间】:2021-11-20 06:37:44 【问题描述】:这些是我要插入数据库的值:
$name4 = $request['name4'];
$email4 = $request['email4'];
$phone = $request['phone'];
$cat = $request['cat'];
$rname = $request['rname'];
$file = $request['file'];
$ingr = $request['ingr'];
$qty = $request['qty'];
$unit = $request['unit'];
$recp = $request['recp'];
$items = array(
'ingredients' => $ingr,
'quantity' => $qty,
'unit' => $unit
);
插入查询如下:
DB::INSERT("insert into tbl_contest (name, email, phone, category, recp_name, file, ingredient, recp_desc)" . "values('$name4','$email4','$phone','$cat','$rname','$file','$items','$recp')");
我想将$ingr
、$qty
和$unit
添加到ingredient
列中。
谁能帮帮我?
提前致谢
【问题讨论】:
作为 Laravel 初学者:看看 Laravel 文档中的 Eloquent ORM。它会让生活更轻松。 PDO(Laravel 使用)不能将数组转换为目标数据库支持的格式,因为每个数据库可能支持也可能不支持数组,并且每个支持数组的数据库都以不同的方式支持它们。一般来说,将数组作为值放在关系数据库中是一个坏主意,应该改用关系。 您可以添加$items
并插入到接受json 数组对象的JSON
列中。您可以在迁移表中定义 JSON column 并定义 cast 以避免手动编码和解码您的数组。
您打算如何存储这些数据?通常,您不会将数组存储在数据库中(例如参见 ***.com/questions/17371639/… 关于此主题)
另外,给定的DB::INSERT
调用对 SQL 注入开放。请不要在任何地方使用它。如果您已经使用 Laravel,请查看有关此主题的任何初学者教程
【参考方案1】:
$items 变量不能是数组,可以转成json字符串。
$items= json_encode(array(
'ingredients' => $ingr,
'quantity' => $qty,
'unit' => $unit
));
【讨论】:
以上是关于我是 Laravel 初学者,谁能告诉我如何将数组插入数据库?的主要内容,如果未能解决你的问题,请参考以下文章