2
Почему второй аргумент не передается запросу?Функция PHP не передает аргумент в запрос PDO
function LikesPastMonth($nMonth, $pid)
{
if($nMonth !== 0) {
$n = $nMonth*-1-1;
} else {
$n = -1;
}
$bdd = new PDO('mysql:host=localhost;dbname=xx', 'xx', 'xx', array(PDO::ATTR_PERSISTENT => true));
$req = $bdd->prepare('SELECT * FROM likes WHERE thedate = DATE_ADD(DATE_ADD(LAST_DAY(CURDATE()) , INTERVAL 1 DAY) , INTERVAL '.$n.' MONTH) AND pid = ?');
$req->execute(array($pid));
$result = $req->rowcount();
if(!$result) {
$result = 0;
}
return $result;
}
Использование константы вместо arg и не подготовка запроса работает.
define('pid','777');
$req = $bdd->query('SELECT * FROM likes WHERE thedate = DATE_ADD(DATE_ADD(LAST_DAY(CURDATE()) , INTERVAL 1 DAY) , INTERVAL '.$n.' MONTH) AND pid = "'.pid.'"')->fetchColumn();
Ввод ARG непосредственно в запрос не работает (2 примеры того, как я сделал попробовать):
1:
$req = $bdd->query('SELECT * FROM likes WHERE thedate = DATE_ADD(DATE_ADD(LAST_DAY(CURDATE()) , INTERVAL 1 DAY) , INTERVAL '.$n.' MONTH) AND pid = "'.$pid.'"')->fetchColumn();
2:
$req = $bdd->query('SELECT * FROM likes WHERE thedate = DATE_ADD(DATE_ADD(LAST_DAY(CURDATE()) , INTERVAL 1 DAY) , INTERVAL '.$n.' MONTH) AND pid = '.$pid.'')->fetchColumn();
Если положить '$ pid' аргумент в запросе не работает даже без подготовки заявления, кажется, что' $ pid' аргумент имеет пустое значение. Выбросьте исключение, если '$ pid' пуст, посмотрите, не обнаружили ли вы какие-либо ошибки. (Кроме того, если вы хотите получить только количество записей, используйте 'SELECT COUNT (*)' вместо фактического выбора всех записей.) – DCoder