簡體   English   中英

MySQL查詢一個變量

[英]MySQL query with one variable

我有一個名為“ main_table”的表,其中有3列:
'玩家','積分'和'drop_date'

我有1個具有不同值的變量($ date):

$date == '2012-06-01'  
$date == '2012-05-01'  
$date == '2012-04-01'  

我有1個MySQL查詢:

$query = "
  select *
  from main_table
  where `drop_date` > '$date'
    AND `drop_date` <= DATE_ADD('$date', INTERVAL 1 YEAR)
  LIMIT 1
";

目標:
我想用不同的通行證運行一個查詢(每個值1通行證)

我努力了 :

<?php
$date['date'] = '2012-06-01';  
$date['date'] = '2012-05-01'; 
$date['date'] = '2012-04-01';

foreach($date as $title => $actual_date) {
  query = "
    select *
    from main_table
    where `drop_date` > '$actual_date'
      AND `drop_date` <= DATE_ADD('$actual_date', INTERVAL 1 YEAR)
    LIMIT 1
  ";
  $result = mysql_query($query) or die(mysql_error());
}

while($row = mysql_fetch_array($result)) {
  echo $row['Player'];
  echo $row['Points'];
}

您不斷重復覆蓋相同的變量...,然后運行查詢,但僅獲取最后一個的結果。 您希望它如何運作?

嘗試這個:

$date = Array("2012-06-01","2012-05-01","2012-04-02");
foreach($date as $actual_date) {
    if( $result = mysql_fetch_assoc(mysql_query("select * from `main_table` where `drop_date`>'".$actual_date."' and `drop_date`<=date_add('".$actual_date."',interval 1 year) limit 1"))) {
        echo $result['Player'];
        echo $result['Points'];
    }
}

請注意,我跳過了將查詢放入變量中,而將查詢結果放入變量中的過程,僅將整個內容一行一行。 由於您的limit 1因此查詢將僅返回一行,因此無需while -loop循環。

只需在foreach循環中移動您的時間即可。

<?php
$date[0] = '2012-06-01';  
$date[1] = '2012-05-01'; 
$date[2] = '2012-04-01';
foreach($date as $title => $actual_date)
{
    query = "select * from main_table where `drop_date` > '$actual_date' AND `drop_date` <= DATE_ADD('$actual_date', INTERVAL 1 YEAR) LIMIT 1"; 
    $result = mysql_query($query) or die(mysql_error());

    while($row = mysql_fetch_array($result))
    {
        echo $row['Player'];
        echo $row['Points'];
    }
}

不要覆蓋您的價值觀。 這樣做可以保留所有3個值。

<?php 
$date['date'][] = '2012-06-01';  
$date['date'][] = '2012-05-01'; 
$date['date'][] = '2012-04-01';

print_r($date);
?>

輸出:

Array
(
    [date] => Array
        (
            [0] => 2012-06-01
            [1] => 2012-05-01
            [2] => 2012-04-01
        )

)

然后使用

foreach ($date['date'] as $actual_date) {

 $query = "
   select *
   from main_table
   where `drop_date` > '$actual_date'
     AND `drop_date` <= DATE_ADD('$actual_date', INTERVAL 1 YEAR)
   LIMIT 1";

   echo $query."<br />";

}

輸出:

select *
    from main_table
    where `drop_date` > '2012-06-01'
      AND `drop_date` <= DATE_ADD('2012-06-01', INTERVAL 1 YEAR)
    LIMIT 1
  <br />
    select *
    from main_table
    where `drop_date` > '2012-05-01'
      AND `drop_date` <= DATE_ADD('2012-05-01', INTERVAL 1 YEAR)
    LIMIT 1
  <br />
    select *
    from main_table
    where `drop_date` > '2012-04-01'
      AND `drop_date` <= DATE_ADD('2012-04-01', INTERVAL 1 YEAR)
    LIMIT 1
  <br />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM