2013-08-04 8 views
-2

Мои метки времени хранилищ баз данных в этом формате 2013-08-05 02:37:55 в поле startmySQL-запрос не возвращает никаких результатов. Возможность ошибки в запросе

$today, как показано в коде ниже сохраняет переменную в формате 2013-08-05

$today = date("Y-m-d"); 

$sh = $db->prepare('SELECT * FROM events WHERE (:today) = DATE(`start`) '); 
$sh->bindValue(":today", $today); 
$sh->execute(); 

не допускается что база данных вернет мне результаты? Что мне здесь не хватает?

Этот запрос корректно работает

SELECT * FROM events WHERE DATE(:today) Between DATE(`start`) and DATE(`end`) 

Спасибо

+1

Работайте над ответом, чтобы научить вас, как ловить рыбу, а не давать вам рыбу ... – John

+0

Вы должны обновить вопрос со всеми соответствующими битами кода, который вы используете. Удалил мой ответ и запустил его, поскольку вопрос не завершен. –

+0

@BurhanKhalid Я обновил свой вопрос с помощью рабочего запроса – EnexoOnoma

ответ

-1

Попробуйте с этим запросом:

SELECT * FROM events WHERE DATE(`start`) = :today 
+1

Метод OP предложения WHERE не является неправильным. – hjpotter92

+0

@ hjpotter92 является правильным; оператор сравнения равен коммутативному. –

+0

Я обновил свой вопрос с помощью рабочего запроса – EnexoOnoma

-1

Попробуйте изменить использование запроса это: $ ш = $ db-> prepare ('SELECT * FROM events WHERE $ today = NOW (DATE())');

+0

Нет, строка 2013-08-05 будет интерполировать и стать арифметическим выражением 2013 минус 8 минус 5, которое представляет собой целочисленное значение 2000. –

-1

Вместо того, чтобы отвечать на ваш вопрос, давая вам рыбу, я собираюсь научить вас, как ловить рыбу для себя.

Ниже показано, как я структура SQL ...

function example() 
{ 
if (!failed_condition) {/*error handling*/} 
else 
{ 
    $query1 = '';//Construct queries, NEVER put them in loops. 
    $result1 = mysql_query($query1); 

    if ($result1) 
    { 
    //success 
    $query2 = ''; 
    $result2 = mysql_query($query2); 

    if ($result2) 
    { 
    //success 
    } 
    else {mysql_error_report($query2,mysql_error(),__FUNCTION__);} 
    } 
    else {mysql_error_report($query1,mysql_error(),__FUNCTION__);} 
} 
} 

Как вы можете видеть, единственный раз, когда я отступ еще один пробел, когда я сталкиваюсь успешный запрос SQL. В противном случае я передам запрос, ошибку и имя функции PHP в службу обработки ошибок.

Вот код обработки ошибок ...

function mysql_error_report($q,$e,$f) 
{ 
if (!isset($database)) {include('database.php');} 

if (isset($_SERVER['HTTP_USER_AGENT'])) {$ua = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);} else {$ua = '';} 

if (isset($database)) 
{ 
    if (isset($_SESSION['member_id'])) {$id = $_SESSION['member_id'];} else {$id = 0;} 
    if (isset($_SESSION)) {$session = mysql_real_escape_string(session_id());} else {$session = 0;} 
    $ip = mysql_real_escape_string(getenv('REMOTE_ADDR')); 
    if (ip_version($ip)=='4') 
    { 
    $ipsql = "INET_ATON('$ip')"; 
    } 
    else 
    { 
    $ip = ip2long6($ip); 
    $ipsql = mysql_real_escape_string($ip); 
    } 

    $query = mysql_real_escape_string($q); 
    $error = mysql_real_escape_string($e); 
    $function = mysql_real_escape_string($f); 
    if (isset($_SESSION['cms_browser'])) {$browser = mysql_real_escape_string($_SESSION['cms_browser'].' '.$_SESSION['cms_browser_version']);} else {$browser = '';} 
    if (isset($_SESSION['type'])) {$type = mysql_real_escape_string($_SESSION['type']);} else if (isset($_SESSION['cms_browser'])) {$type = 'Browser';} else {$type = 'Unknown';} 
    if (isset($_SERVER['REQUEST_URI'])) {$url = $_SERVER['REQUEST_URI'];} else {$url = '';} 

    $query1 = "INSERT INTO errors_sql (id_session, type, id_user, browser, date, ip, function, mysql_error, mysql_query, url, user_agent) VALUES ('$session', '$type', '$id', '$browser', NOW(), $ipsql, '$function', '$error', '$query', '$url', '$ua')"; 
    $result1 = mysql_query($query1); 

    if (!$result1) {mysql_error_report_mail($q,$e,$f,$ua);} 
} 
else {mysql_error_report_mail($q,$e,$f,$ua);} 

Теперь, когда у вас есть что-то создать журнал для вас, чтобы быть в состоянии принять меры по вы должны быть в состоянии увидеть , что происходит. Вам нужно включить ведение журнала MySQL. Так как это не имеет прямое отношение к этому вопросу, я просто дам вам ссылку ...

http://www.jabcreations.com/blog/enable-mysql-logging

После того, как вы что далеко все, что вам нужно, это возможность просмотра файлов в реальном журнал без необходимости вручную перезагрузите документ. Я использовал BareTail, ранее я использовал TailforWin32. Я использую подсветку синтаксиса, синий для SELECT, зеленый для UPDATE, синий для INSERT и красный для DELETE.

Оставьте открытый MySQL-журнал открытым и когда вы столкнулись с проблемой, войдите в него.

Я также настоятельно рекомендую записывать все ваши ошибки PHP, JavaScript и HTTP. Если вы действительно хотите пойти все на пиная donkies включить отчеты об ошибках чувствительности для PHP до максимума ...

error_reporting(E_ALL); 

... и это заставит вас использовать isset().

Не стесняйтесь спрашивать о разъяснениях и наслаждаться возможностью ловить рыбу для себя.;-)

+0

Я не уменьшал, но я бы Рекомендуем использовать базу данных для записи ошибок базы данных. –

+0

Я обновил свой вопрос с помощью рабочего запроса – EnexoOnoma

Смежные вопросы