SELECT * FROM cdr_table
WHERE OwnerUserID = '$_SESSION[user_id]'
AND GatewayID = $gateway_id
AND DATE(Dialed) = $date_sql
AND Dialed != 0
AND TIME(StartTime) BETWEEN '$start_time' AND '$end_time'
Също така силно предлагам екраниране на всички променливи, които вграждате в SQL кода с mysql_real_escape_string()
или еквивалент, дори ако сте сигурни, че няма нищо вредно в тях, просто за да го превърнете в навик.
Обърнете внимание, че заявка като тази може да е по същество неефективна, тъй като не може да използва индекси на StartTime
колона. Ако в таблицата има много потенциално съвпадащи редове, може да е добра идея да денормализирате таблицата си, като създадете отделна колона, съхраняваща само времевата част от StartTime
и настройване на индекс върху него (евентуално комбиниран с други подходящи колони).