通过JSON将带分隔符的字符串发送到PHP以获取准备好的语句
例如,我发送以下id:通过JSON将带分隔符的字符串发送到PHP以获取准备好的语句,php,mysql,json,delimiter,Php,Mysql,Json,Delimiter,例如,我发送以下id: $user->id = '1{3}4{5}6'; 代表: $user->id(=1{3}4{5}6){$option(=3)}$value(=4){$option(=5)}$value(=6) 现在,我需要为每个$选项和$value对使用准备好的语句插入数据库 sql如下所示: if ($user->attr == 1) { $sth = $this->dbh->prepare("insert into customer
$user->id = '1{3}4{5}6';
代表:
$user->id(=1{3}4{5}6){$option(=3)}$value(=4){$option(=5)}$value(=6)
现在,我需要为每个$选项和$value对使用准备好的语句插入数据库
sql如下所示:
if ($user->attr == 1) {
$sth = $this->dbh->prepare("insert into customers_basket_attributes
(customers_id,
products_id,
products_options_id,
products_options_value_id)
values ('1', ?, ?, ?)");
$sth->execute(array($user->id, $option, $value));
return json_encode(1);
}
我想避免每次插入db都回到jQuery。据我所知,这
$user->id='1{3}4{5}6'代码>分解:
Product_id = 1
Option_3 = 4
Option_5 = 6
您希望将其存储到以下记录中:
products_id products_options_id products_options_value_id
1 3 4
1 5 6
从我的观点来看,您基本上需要与上面的行一样多的插入。您可以将其合并为一个插入多行:
insert into customers_basket_attributes
(customers_id,
products_id,
products_options_id,
products_options_value_id)
values (nn, 1,3,4),(nn, 1,5,6)
将其放在一个准备好的语句中是在某种程度上摆弄数组,但应该是可以实现的。也许每行只发布一条插页更为清晰,但成本是微乎其微的。我不知道你在问什么。你能用实际的代码来举例说明你需要做什么吗?如果您不想进行多个AJAX调用,只需进行一次调用并在PHP端插入所需的任何内容……事实上,这非常简单,我发送了一个ID(1{3}4{5}6),1表示实际的产品ID,{3}4表示带有选项的选择菜单。{3}是选择菜单的id,4是选择的选项。在上面的例子中,我有一个带有2个选择菜单的产品。好的,你有自己的方法序列化你的选项,现在你需要写一些东西来反序列化它们?这与JSON和您的数据库有什么关系?或者你是说你已经反序列化了这些数据,而你的查询不起作用?什么是XX?XX,XX?XX,XX?XX
?我只提到我将带有JSON的id发送到php。我发送到php的唯一内容是产品id,以及该产品是否具有属性$user->id,$user->attr,因为我还没有2个值(XX?XX)我需要一种方法从$user->id(1{3}4{5}6)中提取它们。我编辑了代码,这样你就知道XX?XX是什么了。很高兴你理解了这个问题,但是我更多地考虑了一个函数,它去掉了$option/$value,并为每个$sth->execute@HenryW那么,就这样做吧。正如Axel所建议的那样,用一条语句进行多个插入会更快。为了解析这些内容并将其分解为变量,一些REGEX极客应该会接手,对不起。@Brad,谢谢你的建议,当我可以得到id时,我已经满足了。@AxelAmthor我认为最好为reggex提出一个新问题。