I'm trying to execute a PDO query, but it returns zero results. But when I run the query in MySQL, then it returns two rows. This issue only occurs when I add MONTN(column) in the PDO query.
What I have in PHP is this:
$sql = 'SELECT * FROM payment WHERE `user_id` = :userid_53e3d3275e364 AND MONTH(pay_date) = :monthpaydate_53e3d3275e373 ORDER BY `pay_date` DESC';
$bindings = array ( 'userid_53e3d3275e364' => 8,
'monthpaydate_53e3d3275e373' => 'MONTH(CURDATE())' );
$stmt = $this->db->prepare ( $sql );
$stmt->execute ( $bindings );
$result = $stmt->fetchAll ( \PDO::FETCH_CLASS, $class, $ctorArgs );
With this code $result is empty.
When I paste in the binding value into the query manually and run it in phpMyAdmin, then I get two records back (which is what I expect):
SELECT *
FROM payment
WHERE `user_id` = 8
AND MONTH(pay_date) = MONTH(CURDATE())
ORDER BY `pay_date` DESC
And when I run the above PDO code WITHOUT the MONTH(CURDATE()), then PDO also returns records:
$sql = 'SELECT * FROM payment WHERE `user_id` = :userid_53e3d3275e364 ORDER BY `pay_date` DESC';
$bindings = array ( 'userid_53e3d3275e364' => 8 );
$stmt = $this->db->prepare ( $sql );
$stmt->execute ( $bindings );
$result = $stmt->fetchAll ( \PDO::FETCH_CLASS, $class, $ctorArgs );
But for some reason something, somewhere seems to go wrong when I put MONTH(CURDATE()) as binding value.
Is there a way to solve this problem?