Tôi muốn xem liệu một thời gian tôi đọc từ db có trùng lặp với thời gian do người dùng cung cấp hay không.Kiểm tra xem hai lần trùng lặp
cơ sở dữ liệu của tôi trông như thế này:
-----------------------------------------------
|organiser|meeting_start|meeting_end|boardroom|
-----------------------------------------------
| John Doe| 1340193600 | 1340195400| big |
-----------------------------------------------
Mã của tôi trông như thế này:
date_default_timezone_set('Africa/Johannesburg');
$from = strtotime($_GET['meeting_date'] . ' ' . $_GET['meeting_start']);
$to = strtotime($_GET['meeting_date'] . ' ' . $_GET['meeting_end']);
$another_meeting = false;
$meeting_date = strtotime($_GET['meeting_date']);
$meeting_next = $meeting_date + 86400;
$result = mysql_query("SELECT meeting_start, meeting_end FROM admin_boardroom_booking WHERE boardroom = '" . $_GET['boardroom'] . "' AND meeting_start >= '" . $meeting_date . "' AND meeting_end < '" . $meeting_next . "'")or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$from_compare = $row['meeting_start'];
$to_compare = $row['meeting_end'];
$intersect = min($to, $to_compare) - max($from, $from_compare);
if ($intersect < 0)
$intersect = 0;
$overlap = $intersect/3600;
if ($overlap <= 0) {
$another_meeting = true;
break;
}
}
if ($another_meeting)
echo 'ERROR';
Nếu tôi gõ hai lần chồng chéo về mục đích, nó không lỗi tiếng vang. Tôi đang làm gì sai?
Mã của bạn dễ bị tiêm SQL. * Vui lòng * đọc phần này: http://stackoverflow.com/questions/601300/what-is-sql-injection và chuyển sang truy vấn được tham số hóa. Các hàm 'mysql_' cũ sẽ sớm không được dùng nữa, bạn nên sử dụng MySQLi. – Polynomial
Xe tăng để được giúp đỡ. Tuy nhiên, điều đó không giải quyết được vấn đề của tôi. – Albert
@DarkRanger: bạn có thể gõ echo $ kết quả trước khi vòng lặp và cho tôi biết những gì bạn nhận được? –