返回多个具有一个公共列值的mySQL行,放入单独的数组......?

时间:2013-07-29 23:15:14

标签: php mysql

确定。我看了整个网站,我一直走近,但没有雪茄......其他人的“多行返回”问题都有一个共同点,我的不是......他们是行中具有不同价值的行用于查询的列... 我有一个数据库,它将事件日期信息返回到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; }

}

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:如果您的表格CraftShowsabc列,那么$show的每个元素都将是包含3个元素的数组(abc)。 对于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