Php 带一个变量的MySQL查询
我有一个名为“main_table”的表,有3列:Php 带一个变量的MySQL查询,php,mysql,Php,Mysql,我有一个名为“main_table”的表,有3列: “玩家”、“积分”和“放弃日期” 我有1个变量($date),具有不同的值: $date == '2012-06-01' $date == '2012-05-01' $date == '2012-04-01' 我有一个MySQL查询: $query = " select * from main_table where `drop_date` > '$date' AND `drop_date` <=
“玩家”、“积分”和“放弃日期” 我有1个变量($date),具有不同的值:
$date == '2012-06-01'
$date == '2012-05-01'
$date == '2012-04-01'
我有一个MySQL查询:
$query = "
select *
from main_table
where `drop_date` > '$date'
AND `drop_date` <= DATE_ADD('$date', INTERVAL 1 YEAR)
LIMIT 1
";
$query=”
挑选*
从主表
其中'drop\u date`>'$date'
在foreach循环中,只需移动您的“drop\u date”
<?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'];
}
}
您不断重复覆盖同一个变量…然后运行查询,但只获取最后一个变量的结果。您希望它如何工作
试试这个:
$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'];
}
}
$date=数组(“2012-06-01”、“2012-05-01”、“2012-04-02”);
foreach($日期为$实际日期){
如果($result=mysql\u fetch\u assoc(mysql\u query)(“从`main\u table`中选择*,其中`drop\u date`>”)“$actual\u date.”和`drop\u date`不覆盖您的值。这样做可以保留所有3个值
<?php
$date['date'][] = '2012-06-01';
$date['date'][] = '2012-05-01';
$date['date'][] = '2012-04-01';
print_r($date);
?>
然后使用
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 />";
}
foreach($date['date']作为$actual\u date){
$query=”
挑选*
从主表
其中`drop\u date`>'$actual\u date'
和'drop_date'注意:您正在覆盖数组中$date['date']处的相同插槽=
上一个示例中的代码让我感到困惑:您在字典中为每个日期使用相同的键,可能这些日期应该是不同的;然后,贯穿查询结果的位位于定义所述结果的单独范围内,这不用说是行不通的……不要让我开始对您的查询进行参数化我已使用最后一个值(即“2012-14-01”)覆盖了您的$date['date']
。其他值已丢失。请不要对新代码使用mysql.*
函数。这些函数不再维护,社区已开始更新(请参阅)。相反,您应该了解并使用或。如果您不能决定使用哪一个,将对您有所帮助。如果您愿意学习,.quick update:希望在输出中也回显$actual_日期,但它一直显示200520062007,而不是“2012-06-01”、“2012-05-01”、“2012-04-02”“,有什么想法吗?它实际上是在计算它,例如2012-06-01=2005!所以它显示了结果。在托马斯的答案中添加了”来整理它!
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 />