获取选择查询中使用的随机数后的空白页

时间:2014-07-04 14:17:48

标签: php select random row

我的问题是:我找到了一种简单快捷的方法来获取我的表中的随机行。首先,我正在使用查询,它从我的表中计算我的ID。其次,我从 1 生成随机数到计数查询的结果。第三,我从我的表格中选择 id 等于我的随机生成的数字的行。一切正常,但问题是,有时查询会显示空白页,没有给出任何信息,没有给出错误。

这是我的代码:

$viso = $stmt = $db->query("select count(id) from intropage")->fetchColumn();
$min=1;
$max= $viso;
$lopas=rand($min,$max);

$stmt = $db->query('SELECT * FROM intropage WHERE id='.$lopas.'');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
... }

如何解决此 "空白页" 问题? 感谢大家的回答!

2 个答案:

答案 0 :(得分:1)

这不是快速方法,因为您正在对db使用双重请求并且您接触到SQL注入。尝试:

$query = $db->prepare('SELECT * FROM intropage ORDER BY RAND() LIMI 1');
$query->execute();
$results = $query->fetchAll(PDO::FETCH_ASSOC);

foreach ($results as $row) {
    /* */
}

我认为它也会解决您的blank page错误。如果没有,请打开错误报告并告诉我们您收到的错误。

答案 1 :(得分:0)

error_reporting是否已激活? 您的查询是错误的,因此抛出错误,您可能无法看到它

$db->query("SELECT * FROM intropage WHERE id='".$lopas."'");

另外,使用RAND()

是获得随机行的更好方法
$db->query("SELECT * FROM intropage ORDER BY RAND() LIMIT 1");