Php 准备好的mysql语句和数组

Php 准备好的mysql语句和数组,php,arrays,mysqli,prepared-statement,Php,Arrays,Mysqli,Prepared Statement,今天早些时候解决了这个问题。在代码的第二行全局$db,$tags;正在覆盖if($this->has_lead_type_selected($person['ID',$tags)),这导致全局$tags覆盖代码下部的$tags。因此,全局变量为空,因为它在实际$tags变量被赋予函数之前。 当一个HTML表单被提交到我们的RESTAPI时,它会发送名为“lead_type”的数据,这些数据只是用来标识发送的lead的标记 用户从标记云中选择这些标记。如果表单提交给API时带有其中一个标签(lea

今天早些时候解决了这个问题。在代码的第二行
全局$db,$tags
;正在覆盖
if($this->has_lead_type_selected($person['ID',$tags))
,这导致全局$tags覆盖代码下部的$tags。因此,全局变量为空,因为它在实际$tags变量被赋予函数之前。

当一个HTML表单被提交到我们的RESTAPI时,它会发送名为“lead_type”的数据,这些数据只是用来标识发送的lead的标记

用户从标记云中选择这些标记。如果表单提交给API时带有其中一个标签(lead_type),并且我们的任何用户配置文件都匹配这些标签(他们在标签云中选择)。用户会收到一条短信通知他们

所有内容都会发布到数据库表,API可以工作,但每个用户都会收到SMS,即使他们没有匹配的标记。如果我注释掉这一行(我将在下面显示其余代码),就会向每个人发送一条短信。如果我不加注释,则不会向任何人发送短信

if($this->has_lead_type_selected($person['ID'],$tags))
下面是代码的流程

    }
private function has_lead_type_selected($user_id,$tags){
    global $db,$tags;
    $lead_types = explode(',',$tags);
    $user_lead_types = $db
                    ->where('user_id',$user_id)
                    ->where('lead_type_id', $lead_types, 'IN')
                    ->get('user_lead_types');   

    return sizeof($user_lead_types) > 0;

}


//Get lead types from API post and create $tags 
            $lead_types = $this->request['leadData']['lead_types'];
            $strTags = array();
            if(!empty($lead_types))
                $strTags = explode(',',$lead_types);

            $tags = '';

            $lead_types_objects = $db->where('lead_type', $strTags,'IN')->get('lead_types');

            foreach($lead_types_objects as $l)
            {
                if($tags=='')
                    $tags = $l['id'];
                else
                    $tags.=',' .$l['id'];
            }
然后,如果表单标签与用户云标签匹配,我们会向他们发送短信

global $sid,$token;
            $client = new Twilio\Rest\Client($sid, $token);

        $content_data = [         
            "leadname" => $posted_name,
            "leadzipcode" => $posted_zipcode,
            "leadphone" => $posted_phone,
            "leademail" => $posted_email,
            "leadtags" => $lead_types           
            ];

        //Replace Content
        foreach($content_data as $index => $value){
            $lead_sms_template = str_replace("|".$index."|", $value, $lead_sms_template);
        }

        // Step 5: Loop over all our friends. $number is a phone number above, and 
        // $name is the name next to it
        foreach ($people as $person) {
            try{
                //commented temporarily -- uncommented below to try to solve issue of texting everyone still
                if($this->has_lead_type_selected($person['ID'],$tags))
                {
                    $number = $person['phone_no'];
                    $name = $person['first_name']. ' '. $person['last_name'];

谢谢您的帮助。

在代码全局的第二行
$db
$tags
;如果($this->has_lead_type_selected($person['ID',$tags))正在覆盖
if,这导致全局
$tags
覆盖代码下部的
$tags
。因此,全局变量为空,因为它在实际的
$tags
变量被赋予函数之前。

在代码全局
$db
的第二行中,
$tags
;如果($this->has_lead_type_selected($person['ID',$tags))
正在覆盖
if,这导致全局
$tags
覆盖代码下部的
$tags
。因此,全局变量是空的,因为它是在实际的
$tags
变量被赋予一个函数之前。

是否选择了\u lead\u type\u应该检查用户是否选择了一个或所有选择的标签?今天早些时候解决了这个问题。在第二行代码中,全局$db,$tags;如果($this->has_lead_type_selected($person['ID'],$tags)),则被覆盖,这导致全局$tags覆盖代码下部的$tags。因此,全局变量为空,因为它是在实际$tags变量被赋予函数之前。是否选择了\u lead\u type\u应检查用户是否选择了一个或所有选择的标记?今天早些时候解决了该问题。在第二行代码中,全局$db,$tags;如果($this->has_lead_type_selected($person['ID'],$tags)),则被覆盖,这导致全局$tags覆盖代码下部的$tags。因此,全局变量是空的,因为它是在实际的$tags变量被赋予一个函数之前。谢谢你修复我的评论,我以后如何回答我自己的问题?嘿,科迪,你可以像处理任何其他问题一样简单地输入答案字段。谢谢你修复我的评论,将来我如何回答自己的问题?嘿,科迪,你可以像回答任何其他问题一样简单地输入答案字段。