我有一个包含事件和日期的表,另一个包含每个晚上的访客列表。我可以像这样打印夜晚:
$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
答案 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];
}
}