Php 为什么MySQL会说';不支持的操作数类型';检查我的查询中是否存在日期时?
我有以下代码,我想获取存储在Php 为什么MySQL会说';不支持的操作数类型';检查我的查询中是否存在日期时?,php,mysql,date,Php,Mysql,Date,我有以下代码,我想获取存储在$begin中的时间戳并将其传递给MySQL查询,但查询失败: Fatal error: Unsupported operand types 下面是用于填充变量$begin的代码: $datepicker_begin = "01/07/2013"; $begin = DateTime::createFromFormat('m/d/Y', $datepicker_begin); $beginObj = $begin->format('Y-m-d'); $begi
$begin
中的时间戳并将其传递给MySQL查询,但查询失败:
Fatal error: Unsupported operand types
下面是用于填充变量$begin
的代码:
$datepicker_begin = "01/07/2013";
$begin = DateTime::createFromFormat('m/d/Y', $datepicker_begin);
$beginObj = $begin->format('Y-m-d');
$begin = strtotime($beginObj); // becomes Unix Timestamp
这是查询的代码。它正在检查日期列,该列是date
类型,名为date
,以查看表中是否存在该日期
// Check if chosen date is available.
$s=$dbh->prepare("
SELECT DISTINCT
`date`
FROM
`report_coa_bal_hist`
WHERE
UNIX_TIMESTAMP(date) = ?
");
if ($s->execute($begin)) {
return true;
} else {
return false;
}
strotime
在unix时间戳中创建日期
您必须直接使用此变量,而不必对其执行strotime
$begin = strtotime($beginObj);
编辑
将此查询与日期周围的`
一起使用
$s=$dbh->prepare("
SELECT DISTINCT
`date`
FROM
`report_coa_bal_hist`
WHERE
UNIX_TIMESTAMP(`date`) = ?");
if ($s->execute($begin)) {
return true;
} else {
return false;
}
您当前的代码应该可以正常工作。。。但是你也可以试试这个
$datepicker_begin = "01/07/2013";
$begin = DateTime::createFromFormat('m/d/Y', $datepicker_begin);
echo $begin = $begin->getTimestamp();; // becomes Unix Timestamp
查看一下从\u UNIXTIME开始尝试:
$datepicker_begin = "01/07/2013";
$begin = DateTime::createFromFormat('m/d/Y', $datepicker_begin);
$beginObj = $begin->format('Y-m-d');
$begin = strtotime($beginObj); // becomes Unix Timestamp
$sql = "INSERT INTO test(ID, time) VALUES(NULL, FROM_UNIXTIME('$begin'));";
mysql_query($sql);
无法重现您的错误。我可以回显
$begin
很好。你现在得到了什么?我们可以看到您用于MySQL的查询吗?这很奇怪。我只是再次尝试回显它,这次更接近变量设置的位置,并且回显正确。抱歉,代码中它下面的某些内容一定是破坏了它。然而,下一个问题是为什么我的查询不起作用!我现在更新问题。抱歉,我已经更新了我的问题。我确实尝试传递了$beginObj
,但仍然得到了相同的错误。现在我怀疑我的问题有误。非常感谢大家。问题归结到后面。抱歉,我已经更新了我的问题。谢谢你的链接。我不知道getTimestamp()。