插入值时将变量混合到数组中

时间:2013-07-23 作者:user35683

我有一个函数,可以向数据库中插入一堆值。没问题,但我有一个条件改变了mysql语句。问题是wordpress构造语句的方式,下面是我尝试的。。。

public function sqlInsertTicket($event, $customer, $ticket){

    $reference = 0;

    if ($customer[\'gender\']=="F"){
        $table = "f_ti";
        $sql =\'"ft_num"=>"\'.$ticket[\'number\'].\'","booking_id"=>"\'.$ticket[\'booking\'].\'"\';
    }
    if ($customer[\'gender\']=="M"){
        $table = "m_ti";
        $sql =\'"ticket_num"=>"\'.$ticket[\'number\'].\'","mbooking_id"=>"\'.$ticket[\'booking\'].\'"\';
    }
    $this->edb->insert(
                $table,
                array(
                        $sql,
                        \'event_id\'                  =>  $event[\'id\'],
                        \'original_ev\'               =>  $event[\'id\'],
                        \'age\'                       =>  $customer[\'age\']
                    )
            );
    return $this->edb->insert_id;
}
我删除了很多值,但您可以看到我正在尝试做什么。$sql变量是要更改的。我可以把整件事写两遍,但我有很多事情要做,从长远来看这会节省很多时间。

Wordpress基本上将$sql作为列名的0,并对值进行疯狂的处理。

谢谢Joe

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您正在创建string ....

$sql =\'"ft_num"=>"\'.$ticket[\'number\'].\'","booking_id"=>"\'.$ticket[\'booking\'].\'"\';
。。。但希望它作为一个数组运行。。。

array(
    $sql,
    \'event_id\' =>  $event[\'id\'],
这与WordPress的工作方式无关。这是纯PHP。您确实创建了以下内容:

array(
    [] => "ft_num"=>"\'.$ticket[\'number\'].\'","booking_id"=>"\'.$ticket[\'booking\'].\'",
    \'event_id\' =>  $event[\'id\'],
您需要动态构建阵列。

 $dynargs = array(
     \'event_id\'                  =>  $event[\'id\'],
     \'original_ev\'               =>  $event[\'id\'],
     \'age\'                       =>  $customer[\'age\']
 )

if ($customer[\'gender\']=="F"){
    $table = "f_ti";
    $dynargs[\'ft_num\'] = $ticket[\'number\'];
    $dynargs[\'booking_id\'] = $ticket[\'booking\'];
} elseif ($customer[\'gender\']=="M"){
    $table = "m_ti";
    $dynargs[\'ticket_num\'] = $ticket[\'number\'];
    $dynargs[\'mbooking_id\'] = $ticket[\'booking\'];
}
$this->edb->insert(
            $table,
            $dynargs
        );
return $this->edb->insert_id;
那是我当场写的。这可能是马车,但这就是想法。

SO网友:montrealist

我想说,你应该从这两种情况是互斥的开始,所以性别MF.

if ($customer[\'gender\']=="F"){
    $table = "f_ti";
    $sql =\'"ft_num"=>"\'.$ticket[\'number\'].\'","booking_id"=>"\'.$ticket[\'booking\'].\'"\';
} else if ($customer[\'gender\']=="M"){
    $table = "m_ti";
    $sql =\'"ticket_num"=>"\'.$ticket[\'number\'].\'","mbooking_id"=>"\'.$ticket[\'booking\'].\'"\';
}

结束