php批量查询
㈠ 用php+mysql做一个题库系统,随机抽取五百题左右生成考试卷,最有效率的做法是什么
在PHP中使用array_rand函数,你可以逐一读取题目,但如果你想一次性读取所有题目,尽管array_rand函数可能有效,使用“where id in 数组”的查询方式效率可能会低于直接在数据库中随机抽取记录。
如何从数据表中随机抽取记录?一种方法是使用max_id*rand(),但这可能只适用于逐条抽取。如何批量随机抽取?可以尝试排序,然后选取前500题。排序可以利用一些函数,比如md5或sha1,这些函数执行效率较高。为了使结果更具随机性,可以将字段值与一个随机数进行运算。
个人建议还是使用array_rand随机抽取500个id存到数组,然后遍历数组。这样可以避免题目重复。如果在数据库中一次随机抽取一条记录,需要考虑碰巧重复的问题。批量选取的话,可以试试上述方法。
㈡ php批量导入数据如何去重复
你好,这是我解决你这个问题的思路,希望能帮到你:比如你是根据a字段设置唯一,在每次插入之前就使用下一条需要插入的值去数据表里面查询,如果查询到了就跳出当前循环,下次循环继续(continue),希望能帮到你!
㈢ Thinkphp怎么批量更新数据
// 下面是一个model类中的方法,你配置好model的表名,调用updateAll()方法
<?php
use Think\Model;
use Org\Util\String;
class TestModel extends Model
{
protected $tableName = 'your_table';
/**
* 单条-条件查询
*
* @param array $where 查询条件
* @return \Think\mixed
*/
public function getOne($where)
{
return $this->where($where)->find();
}
/**
* 多条-条件查询
*
* @param array $where 查询条件
* @return \Think\mixed
*/
public function getAll($where)
{
return $this->where($where)->select();
}
/**
* 插入数据
*
* @param array $data
* @return \Think\mixed
*/
public function insertOne($data)
{
return $this->add($data);
}
/**
* 条件删除
*
* @param array $where
* @return \Think\mixed
*/
public function deleteOne($where)
{
return $this->where($where)->delete();
}
/**
* 查询字段最大值
*
* @param string $field
* @return \Think\mixed
*/
public function getMaxVal($field)
{
return $this->field("max(".$field.") as max")->find()['max'];
}
/**
* 条件更新
*
* @param array $where 条件
* @param array $data 数据
* @return Ambigous <boolean, unknown>
*/
public function updateAll($where,$data)
{
return $this->where($where)->save($data);
}
/**
* 分页查询
*
* @param array $where 条件
* @param string $order 排序字段
* @param number $limit 一页里的数据条数
* @param number $page_index 页码
* @return array
*/
public function getByPage($where,$order,$limit,$page_index)
{
$result = M()->table('table_name')->where($where)->order($order)->limit($limit)->page($page_index)->select();
return $result;
}
/**
* 获取页数
*
* @param array $where 条件
* @param number $num 一页里的数据
* @return number
*/
public function getPageNum($where,$num = 10)
{
$count = $this->where($where)->count();
return ceil($count/$num);
}
/**
* 条件查询一个字段
*
* @param array $where
* @param string $field
* @return \Think\mixed
*/
public function getFieldVal($where,$field)
{
return $this->where($where)->getField($field);
}
}