确定。我看了整个网站,我一直走近,但没有雪茄......其他人的“多行返回”问题都有一个共同点,我的不是......他们是行中具有不同价值的行用于查询的列... 我有一个数据库,它将事件日期信息返回到PHP日历...数据库已设置,我已设置日历,查询正常...但仅在指定日期只有一个事件。 ..如果DB中该日期有2个事件,则查询仅返回第一个事件... 我需要知道如何查询:
SELECT * FROM CraftShows WHERE Date = $date
...然后(说从该查询返回2行...)将两行返回到SEPARATE变量中,在另一个数组中以便于访问...
最好:第一行进入$show[0]
,第二行进入$show[1]
...
以便之后,我可以在我的日历PHP文件中编写一个while循环,遍历数组,将行回显到<TD>
元素...
我希望我有一个我所拥有的片段,但我把它混乱了,而且它完全搞砸了。我会在我再次尝试时发布这个帖子,然后在第二次尝试时更新这篇文章...我希望这很清楚......感谢提前任何帮助。干杯!
-Andrew
附录:
这里是有效的代码,但只返回第一个事件,如果有多个匹配的$showdate
在数据库中...
while ( $day_num <= $days_in_month ) {
$showdate = $year . "-" . $month . "-" . $day_num;
$showdata = mysql_query("SELECT * FROM CraftShows WHERE Date = '$showdate'");
$row = mysql_fetch_array($showdata);
echo "<td id = 'caldata' height=240px width=120px valign = 'top'> $day_num <br> $row[0]
<br> $row[1] <br> $row[3] </td>";
$day_num++;
$day_count++;
if ($day_count > 7) {
echo "</tr><tr>";
$day_count = 1;
}
}
答案 0 :(得分:-1)
如果您使用的是PHP,则可能需要以下内容:
$dbh = Database::connect();
$query = "SELECT * FROM CraftShows WHERE Date = ?";
$sth = $dbh->prepare($query);
$sth->execute(array($date));
for($i=0 ; $i<$sth->rowCount() ; $i++){
$show[$i] = $sth->fetch();
}
return $show;
OBS:如果您的表格CraftShows
有a
,b
和c
列,那么$show
的每个元素都将是包含3个元素的数组(a
,b
和c
)。
对于exeple,$show[2]["b"]
将包含查询中提取的第三行的字段b
。
OBS2:Database
应该是与您的数据库连接的PHP类。类似的东西:
class Database {
public static function connect() {
$dsn = 'mysql:dbname=name_here;host=host_here';
$user = 'username_here';
$password = 'password_here';
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection Failed : ' . $e->getMessage();
exit(0);
}
return $dbh;
}
}
更新: 您的代码更新可能需要尝试:
$return = array();
$i=0;
while($row=mysql_fetch_array($showdata)) {
$return[$i] = $row;
$i++;
}
结果将在$return