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()。