如何按ID顺序使用php和mysql引用当天的报价

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何按ID顺序使用php和mysql引用当天的报价相关的知识,希望对你有一定的参考价值。

我正在尝试连接mysql数据库并获取数据我需要它按ID(每日)按顺序获取(数据)并将两个数据分开并通过两个不同的变量调用它们,数据库看起来像这样:

------------------------------
| ID |   Data  |  Data2
------------------------------
| 1  |  tea    |   hot
| 2  |  milk   |   hot
| 3  | pepsi   |  cold

并且输出只有一行(一个数据)

我不是如上所述:)这只是为了澄清......以及UTF-8中大数据的最佳排序和类型是什么?

编辑: 你能让它返回5行而不是1行吗?通过身份证?例如第一天(1-2-3-4-5)ID和第二天(6-7-8-9-10)等等?

答案
    quotes
    ----------------------------------
    | id | data        | data2
    ----------------------------------
    | 1  | first quote | translated quote
    | 2  | second...   | bla bla

然后你选择它像:

   $firstday="2011-06-06";
    $getquote = mysql_query("SELECT * FROM quotes WHERE id=(DATEDIFF(CURDATE()+1, '$firstday'))");
$quote = mysql_fetch_object($getquote);
echo $quote->data . $quote->data2;

编辑!!:我已经删除了datediff,因此从日期差异返回的ID直接在WHERE中。

这样做是计算第一天和当前日期之间的差异。因此,每天约会的日期都会更大。 DATEDIFF(CURDATE()+1, '$firstday') as datediff可以解释为

datediff = differenceBetween(Currentday +1 and firstDay)
  • 昨天是2011-07-06,因此datediff = 2011-07-07 (there is +1!) - 2011-07-06是1
  • 今天,它的2011-07-08 - 2011-07-06是2
  • 明天2011-07-09 - 2011-07-06是3
  • 后天2011-07-10 - 2011-07-06是4
  • 在一个月内它将是2011-08-08 - 2011-07-06,即33

因此,datediff每天都会增加1

quotes
-------------------------
|id| data
-------------------------
|1| quote          day 1 (because date difference from start == 1)
|2| quote 2        day 2 (datediff == 2)
|3| quote 3        day 3 (datediff == 3)
|4| quote 4        day 4
.....

或者很快:每天都会有不同的引用,从ID 1开始。

我无法解释这个......


每天编辑#2:5报价

$offset = date_diff(new DateTime('now'), new DateTime('2011-08-29'))->format('%d');
$getquote = "SELECT * FROM quotes LIMIT {$offset},5";

第二次编辑感谢ajreal(SQL LIMIT syntax error


编辑#3:5每天报价,可变量变化..

选项1:

$choose=0; //statically defined, only first of that day will pop out

选项2:

$choose = mysql_real_escape_string($_GET["qid"]); //which one will be defined in url.. (watch out, people can figure it out and browse through all quotes

选项3:

$choose = rand(0,4); //will choose it randomly from those 5 daily quotes

因此,选择您喜欢的其中一个选项,然后在此之前添加:

$offset = 5*date_diff(new DateTime('now'), new DateTime('2011-08-29'))->format('%d') + $choose;
$getquote = mysql_query("SELECT * FROM quotes WHERE id = '$offset'");
$quote = mysql_fetch_object($getquote);
echo $quote->data . $quote->data2;
另一答案

如果你想要一整天的固定报价,只需让当天的第一个客户在桌面上做一个RAND()并选择随机报价。

然后将该报价标记为当天的报价,并为所有其他用户提供。

重复。

以上是关于如何按ID顺序使用php和mysql引用当天的报价的主要内容,如果未能解决你的问题,请参考以下文章

PHP执行SQL查询

php和mysql排序问题

MySQL PHP插入新行,其中rowNum列值始终按日期和时间按时间顺序排列

mysql按顺序生成一个不重复的id

Mysql Explain的使用

ID 按字母顺序而不是数字顺序