日付データ型に問題があります。私はphpmysqlpdoステートメントを持っています:
$mystmt = $mydb->prepare("
SELECT `ad_id`
FROM `tbl_actions`
WHERE
(`actiondate` > :nowcookietime )
");
$mystmt->execute(array(
':nowcookietime'=>date("Y-m-d H:i:s", time()-$cookiedurationlock),
)
);
$testnotinsql = $mystmt->fetch(PDO::FETCH_ASSOC); // EMPTY
コード実行は空を返します。しかし、general_logから以下のSQLを取得し、SQLツール(HeidiSQL)で実行すると、レコードが返されます。general_logからのSQL:
SELECT ad_id
FROM tbl_actions
WHERE
(actiondate> '2012-08-24 17:53:21' )
私のPHPタイムゾーンはUTC+7です。MysqlはSYSTEM(UTC)です。私が理解しているように、同じタイムゾーンを使用してphpに挿入してクエリを実行しても、タイムゾーンの問題はありません。
強制文字列を使用してバインドパラメータをテストします
':nowcookietime'=>date("Y-m-d H:i:s", time()-$cookiedurationlock),
しかし、それは同じ空です。
ただし、quoteを使用すると、行が返されます
':nowcookietime'=>"'".date("Y-m-d H:i:s", time()-$cookiedurationlock)."'",
引用符は必要ないことを理解しているので、このステートメントの何が問題になっているのかを明確にしていただけますか。mysqlpdoquoteを使用してください。
編集1:
正しいSQLを更新します。SQLで引用符を使用すると、テストから取得するときの私の間違いです。引用なし:nowcookietimeは空です。
クローズ
以下の私の答えを参照してください。