仅限 pSQL 数组字段
Posted
技术标签:
【中文标题】仅限 pSQL 数组字段【英文标题】:pSQL array field only 【发布时间】:2021-12-01 18:52:13 【问题描述】:我正在尝试插入一个大数组,但由于单引号“'”导致其中一个字段 (product_name) 中断。
如何在将数组插入数据库之前只 pSQL 仅 product_name 字段?
这就是我的数据库的样子(它是一个 prestashop order_detail 表)
[75] => Array
(
[id_order_detail] => 76
[id_order] => 23
[id_order_invoice] => 13
[id_warehouse] => 0
[id_shop] => 1
[product_id] => 5191
[product_attribute_id] => 0
[id_parent] => 5191
[parent_reference] => 0
[item_position] => 0
[product_name] => AMIX MR POPPER'S NOCAMIX WHITE CHOCO CREAM 275G
[product_quantity] => 1
[product_quantity_in_stock] => 1
[product_quantity_refunded] => 0
[product_quantity_return] => 0
[product_quantity_reinjected] => 0
[product_price] => 8.363636
[reduction_percent] => 10.00
[reduction_amount] => 0.000000
[reduction_amount_tax_incl] => 0.000000
[reduction_amount_tax_excl] => 0.000000
[group_reduction] => 0.00
[product_quantity_discount] => 9.380000
[product_ean13] =>
[product_upc] => 647
[product_reference] => L655
[product_supplier_reference] =>
[product_weight] => 0.000000
[tax_computation_method] => 0
[tax_name] =>
[tax_rate] => 0.000
[ecotax] => 0.000000
[ecotax_tax_rate] => 0.000
[discount_quantity_applied] => 0
[download_hash] =>
[download_nb] => 0
[download_deadline] => 0000-00-00 00:00:00
[total_price_tax_incl] => 8.280000
[total_price_tax_excl] => 7.530000
[unit_price_tax_incl] => 8.280000
[unit_price_tax_excl] => 7.530000
[total_shipping_price_tax_incl] => 0.000000
[total_shipping_price_tax_excl] => 0.000000
[purchase_supplier_price] => 5.150000
[original_product_price] => 8.363636
[original_wholesale_price] => 0.000000
)
[76] => Array
(
这就是我做插入的方式。
Db::getInstance()->insert('order_detail', $response);
虽然 $response 是整个数组。 如您所见,我是新手;任何帮助表示赞赏。
非常感谢!
【问题讨论】:
尝试在插入前用$response['product_name'] = pSQL($response['product_name'])
编辑$response
变量。
$response['product_name'] 不起作用,因为它是一个多维数组(我认为)。它抛出“注意:未定义的索引:id_order_detail”。执行 $response[0]['product_name'] 有效,但它只插入第一行。我认为我必须做一个 foreach
【参考方案1】:
您可以使用 Db::getInstance()->execute 编写整个查询,这样您就可以转义单个字段,或者您必须清理 $response 数组中的数据。
【讨论】:
【参考方案2】:这是一个简单的技巧。有了这个功能,你就可以轻松搞定,而且在更多的情况下可以使用。
Db::getInstance()->insert('order_detail', mypSQL($response));
function mypSQL($var)
if (is_array($var))
foreach ($var as $key => $val)
$var[$key] = mypSQL($val);
elseif (is_string($var))
$var = pSQL($var);
return $var;
【讨论】:
以上是关于仅限 pSQL 数组字段的主要内容,如果未能解决你的问题,请参考以下文章