【问题标题】:How to auto increment mysql Limit command in php如何在php中自动增加mysql Limit命令
【发布时间】:2014-07-23 11:06:41
【问题描述】:

我需要一次显示一个mysql表行,因为我在php中使用:

$result = mysqli_query($con,"select * from table limit 0,1");
while($row = mysqli_fetch_array($result)) {
    echo "First Name:" . $row['First'] . " " . "Last Name:" . $row['Last'];
    echo "<br>";
}

我需要一次显示一行,但在每个 php 执行时显示每个新行,就像第一个用户看到第一个“名字,姓氏”第二个匿名用户在执行页面时看到第二个“名字,姓氏” " 来自数据库。

这给出了一个错误:

$result = mysqli_query($con,"select * from voucher limit '$count',1");

(我在参数中包含了 $count)

在执行时,它每次只显示第一行。我需要对其进行修改,即每当执行代码时,它都会返回一个新的行值。例如,第一次它会输出第一行,在第二次执行脚本时它会输出第二行等等..

我在ubuntu服务器上使用php5,mysql。

请帮忙。

【问题讨论】:

  • 完全取消限制
  • 试试ORDER BY RAND() LIMIT 1

标签: php mysql limit


【解决方案1】:

您可以通过两种方式做到这一点: 第一个是将增量值保存在某处。我不知道你如何传递它或何时以及如何执行它,但它们每次都单独运行(例如通过 cron 作业或终端运行),你可以将值保存在一个简单的文件或 memchache 中。

第一种方式:

$offset = file_get_contents('my_counter.txt');
$offset++;
$result = mysqli_query($con,"select * from table limit " . (int) $offset . ",1");
file_put_contents('my_counter.txt', $offset);

下一个是保存行中的最后一个 id:

$lastID = file_get_contents('my_counter.txt');
if($lastID == "") // First call and no last id
    $lastID = 0;

$result = mysqli_query($con,"select * from table WHERE ID > " . (int) $lastID . " limit 0,1");
while($row = mysqli_fetch_array($result)) {
     echo "First Name:" . $row['First'] . " " . "Last Name:" . $row['Last'];
     $lastID = $row['ID']; // Your autoincrement row
}
file_put_contents('my_counter.txt', $lastID);

我希望我正确理解了您的问题,这对您有所帮助。

【讨论】:

  • Martin 如何执行此部分:echo $lastID; file_put_contents('/var/www/my_counter.txt', $lastID);在用户点击
  • 只需在您的表单提交操作中添加代码 :) 例如。如果我们有:
    // 你的输入在这里
    在你的操作中你将有 if(isset($_GET['action']) && $_GET ['action'] == 'save_user') { // 在这里保存 }
  • 我有一个表单字段,描述为:
    如何添加多个操作,我应该将其保存在包含此表单的文件中还是创建用于验证操作的新文件。
  • 你可以查看这个网址:techrepublic.com/article/…
  • 基本上我正在按顺序生成“姓名”和“父亲姓名”,并将输出提供给变量,然后将其放入表单输入中,然后链接到操作文件。我已将我们讨论的这段代码放在具有表单的同一个文件中。问题是每次刷新时 $lastID 都会增加。有什么方法可以在页面刷新时不会增加但在该表单上提交它应该或其他方式。
【解决方案2】:

由于您希望在 php code 运行时检索数据,因此您需要计算代码中的循环并增加如下所示的值。

如果你想循环,你需要增加0 in LIMIT 0,1

类似这样的循环

LIMIT " . $loopcount . ",1
LIMIT " . $loopcount . ",1
LIMIT " . $loopcount . ",1

我不是 php 程序员,所以我不知道确切的代码。

如果您只需要随机而不是下一个,您可以使用SELECT * FROM table ORDER BY RAND() LIMIT 1

这只是给出一个随机记录,你不会离开表格,因为它总是从表格中选择一条记录。

如果你有一张大桌子,它会稍微影响你的表现。但你总会得到记录。如果您只是循环LIMIT " . $loopcount . ",1,您就有机会尝试在表范围之外进行选择。如果您有 100 行,并且您尝试LIMIT 101,1,您将得到一个空记录集。

【讨论】:

  • 是的,这正是我想要实现的,我如何在 php 中做到这一点?
【解决方案3】:

试试这个

$result = mysqli_query($con,"select * from table ORDER BY RAND() LIMIT 1");
while($row = mysqli_fetch_array($result)) {
   echo "First Name:" . $row['First'] . " " . "Last Name:" . $row['Last'];
echo "<br>";
}

【讨论】:

  • 他希望每次代码运行时都显示一条新记录。
  • 这个也一样吧?
  • 否这会显示表中的所有记录。他想要 1 条新记录/加载
  • 我不是 php 程序员,所以我不确定。这不会增加我认为的价值。它基于php代码执行的时间,所以我认为这将始终提供相同的记录,因为它只是一次刷新。我认为最好的方法是使用SELECT * FROM table ORDER BY RAND() LIMIT 1
猜你喜欢
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 2017-07-20
相关资源
最近更新 更多