while while循环中的循环

时间:2012-06-16 09:45:31

标签: php while-loop

我有一个包含事件和日期的表,另一个包含每个晚上的访客列表。我可以像这样打印夜晚:

$day = date("l");
$date = getFullDateString($day);

$result = mysql_query("SELECT * FROM nights WHERE day = '$day' AND promoter = 'blah'") or die(mysql_error);

while ($row = mysql_fetch_array($result)) {
    echo "<h2>";
    echo $row[name];
    echo " (";
    echo getFullDateString($row[day]);
    echo ")</h2>";
}

问题是,对于这些事件中的每一个,我都希望将guestlist列在其下面。我已经尝试在内部放置另一个while循环,但即使是测试回声也不起作用。

$result2 = mysql_query("SELECT DISTINCT guest FROM guestlists WHERE night = '$row[name]' AND date = 'getFullDateString($row[day])'") or die(mysql_error ());

    while($row2 = mysql_fetch_array($result2)) {
        echo $row2[0];
        echo "test";
        echo "<br />";
}

基本上我想要以下内容:

  

活动1

     

姓名1

     

姓名2

     

姓名3

     

活动2

     

姓名1

     

姓名2

     

姓名3

3 个答案:

答案 0 :(得分:1)

您在查询字符串中有一个不会运行的方法。

尝试:

$sql = "SELECT DISTINCT guest FROM guestlists WHERE night = '".$row['name']."' AND `date` = '".getFullDateString($row['day'])."'"

此外,date是MySQL中的保留字,应该在反引号中封装或更改为其他内容。

此外,mysql_函数已被弃用,建议将其替换为PDO or MySQLi

答案 1 :(得分:1)

查看Complex (curly) syntax for string parsing,了解将变量嵌入字符串的正确方法。

答案 2 :(得分:0)

试试这个......

$result = mysql_query("SELECT * FROM nights WHERE day = '".$day."' AND promoter = 'blah'") or die(mysql_error);

while ($row = mysql_fetch_array($result)) {
    echo "<h2>".$row[cname]."</h2>";

    $result2 = mysql_query("SELECT DISTINCT guest FROM guestlists WHERE night = '$row[name]' AND date = '".getFullDateString($row[day])."'") or die(mysql_error);

   while ($row2 = mysql_fetch_array($result2))  
    {
        echo $row2[cname];  
    }

}