我的数据库在字段2013-08-05 02:37:55
start
存储时间戳
$today
如下面的代码所示,以[{1}}
2013-08-05
不应该认为数据库会返回结果吗?我在这里缺少什么?
此查询正常运行
$today = date("Y-m-d");
$sh = $db->prepare('SELECT * FROM events WHERE (:today) = DATE(`start`) ');
$sh->bindValue(":today", $today);
$sh->execute();
谢谢
答案 0 :(得分:-1)
尝试使用此查询:
SELECT * FROM events WHERE DATE(`start`) = :today
答案 1 :(得分:-1)
尝试更改您的查询 用这个 : $ sh = $ db-> prepare('SELECT * FROM events WHERE $ today = NOW(DATE())');
答案 2 :(得分:-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()
。
随意请求澄清并享受为自己捕鱼的能力。 ; - )