mysqlphp做循环的方法


mysql php doing loop method

嗨,我是php代码的新手,这是我想解决的问题

  1. 假设我们有事件[eid,pid,start_time,end_time,date]=[kim,34,2:00:00,4::002013-12-25]

如果我想打印某个日期的"范围"。例如,我输入诸如之类的日期

开始=2012-12-23end=2012-12-25

我想打印这些日期之间的所有事件。我应该放一些for循环功能来查询吗?或

$result2 =mysql_query("
select eid,description
from event natural join eventdate
where pid = '$pid'
and edate = '$edate'
}

或此处

if($myrow = mysql_fetch_array($result))
{
  echo"<table border=1>'n";
  echo"<tr><th>pid<th>edate<th>description<th> schedule I invited and accept</tr>'n";
  do{
    printf("<tr><td>%s<td>%s<td>%s<td></tr>'n",$myrow["pid"],$myrow["edate"],$myrow["description"]);
  }while($myrow = mysql_fetch_array($result));

如果要选择edate属于特定日期范围的所有行,并且假设edate的类型为date,则可以执行

SELECT e.eid, e.description
  FROM event e JOIN eventdate d
    ON e.eid = d.eid
 WHERE pid = '$pid'
   AND edate BETWEEN '$range_start_date' AND '$range_end_date'

附带说明:考虑学习和使用带有mysqli_*PDO的准备语句,而不是插入查询字符串。

这是SQLFiddle演示


您的php代码可能看起来像

$pid = 34;
$edate = '"2013-12-23"-"2013-12-25"';
list($range_start_date, $range_end_date) = explode('"-"', trim($edate, '"'));
$db = new mysqli('localhost', 'user', 'userpwd', 'test');
if (!$db) {
    die('Could not connect: ' . $db->connect_error); //TODO: better error handling
}
$sql = "SELECT e.eid, e.description
  FROM event e JOIN eventdate d
    ON e.eid = d.eid
 WHERE pid = ?
   AND edate BETWEEN ? AND ?";
if ($stmt = $db->prepare($sql)) {
    $stmt->bind_param('iss', $pid, $range_start_date, $range_end_date);
    $stmt->execute();
    $stmt->bind_result($eid, $description);
    while ($stmt->fetch()) {
        // Output a row
        echo "<tr><td>$pid</td><td>$eid</td><td>$description</td></tr>";
    }
    $stmt->close();
} else {
    die('Prepare failed: ' . $db->error); //TODO: better error handling
}
$db->close();