Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JSON将带分隔符的字符串发送到PHP以获取准备好的语句_Php_Mysql_Json_Delimiter - Fatal编程技术网

通过JSON将带分隔符的字符串发送到PHP以获取准备好的语句

通过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

例如,我发送以下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 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提出一个新问题。