我正在将由逗号分隔的数字数组发送到服务器。基本上在服务器数据库上,我有一个包含数字的字段。服务器端代码检查数据库中有哪些数字,并向我发送这些数字的数组。

以下代码是我正在使用的...

           public function already_user()
{
           $contacts=$this->input->post('contact');
           //$contacts is an array.

            $user=  explode(',',$contacts);
            foreach($user as $number)
{

            $data = array (
            'username' =>$number
            );
            $usernumber = $this->chat_model->get(array('username'=>$number)); // a simple query to datbase that check if number exists in database column or not.
              if(!$usernumber==""){
                  $value[]=$usernumber;

              }

           }
           echo json_encode($value);

           }


关于此代码的唯一缺点是,它的运行速度非常慢。...如果我有1000个以上的数字,则需要一分钟。任何单个mysql查询??

最佳答案

您为什么不只编写一个查询?解析该字符串以获取一个数组并一次查询表。

$contact_array = array_map('trim', explode(', ', $contacts));

$all_usernumbers = $this->chat_model->get(array('username IN'=> $contact_array));


应该(取决于您的chat_model->get()接受什么)转换为:

SELECT  * FROM your_table WHERE username IN ('123', '345')


这都是伪代码,因为我不知道您的framework接受什么,但是上面的SQL查询应该是有效的。

10-07 14:01
查看更多