SQL语句
public function get_radom_article(){
$table1 = $this->get_table('article') ;
$sql = 'SELECT *
FROM `'.$table1 .'` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `'.$table1 .'`)-(SELECT MIN(id) FROM `'.$table1 .'`))+(SELECT MIN(id) FROM `'.$table1 .'`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 10';
return $this->query_all($sql);
}
提取
<?php foreach($this->radom_articles AS $key => $val) { ?>
<li><a href="article/<?php echo $val['id']; ?>" title="<?php echo $val['title']; ?>"><?php echo $val['title']; ?></a></li>
<?php } ?>
可以提取到标题为什么提取不到id?
这些提取到的数据,标题全部没有错误,但是为什么ID全部都是一样的,也就是没有提取到对应标题字段的id?SQL是哪里出错了吗?各位大神指导下
标题的字段是title,id字段是id
你把
*
换成t1.*
看看第一:你连表查询的t1.id >= t2.id就已经会出现重复的数据,虽然你的算法看起来这个可能性比较小。
第二:结果集包含多个id字段,php取出来的结果出现在select后面的最后的id字段会覆盖之前的值,当然也可能查询优化器会改变select后列的顺序也说不定。