我的数据库以这种格式存储时间戳2013-08-05 02:37:55
在字段中start
$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`)
谢谢
尝试使用此查询:
SELECT * FROM events WHERE DATE(`start`) = :today
尝试更改查询使用这个 :$sh = $db->prepare('从事件中选择 * 其中 $today = 现在(DATE((('(;
我不会通过给你一条鱼来回答你的问题,而是教你如何自己钓鱼。
以下是我如何构建 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错误。如果你真的想全力以赴踢唐基斯,把 PHP 的错误报告灵敏度提高到最大......
error_reporting(E_ALL);
。它会迫使你使用isset()
.
随意要求澄清并享受自己钓鱼的能力。