我正在将由逗号分隔的数字数组发送到服务器。基本上在服务器数据库上,我有一个包含数字的字段。服务器端代码检查数据库中有哪些数字,并向我发送这些数字的数组。
以下代码是我正在使用的...
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查询应该是有效的。