Вопросы по PDO php?

Небольшой код, поиск по полю типа TIMESTAMP:
$a = '2007-08-09 01:00:00';
$b = '2007-08-09 08:00:00';
    
$st = $pdo->prepare('set profiling=1');
$st->execute();
    
$st = $pdo->prepare('SELECT `mytime` FROM `date` WHERE `mytime` BETWEEN a=:a AND b=:b ');
$st->bindParam(':a', $a, PDO::PARAM_STR);
$st->bindParam(':b', $b, PDO::PARAM_STR);
$st->execute();
$RES = $st->fetchAll();

Прямой запрос в БД вида
SELECT `mytime` FROM `date` WHERE `mytime` BETWEEN '2007-08-09 01:00:00' AND '2007-08-09 08:00:00'

работает отлично но:

1) Как включить профайлинг set profiling=1 что бы посмотреть запрос сам, надо в этом же запросе что ли как-то команду посылать, профайлинг не заработал у меня так

2) По самому запросу ошибка SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '='2007-08-09 01:00:00' AND b='2007-08-09 08:00:00'' at line 1
Я не могу понять что конкретно ему не нравится в данном запросе

3) Вопрос по PDO::PARAM_STR пробовал в других рабочих запросах этот параметр не указывать, например так $b->bindParam(":email",$email); и всё работает, тогда он нужен, не нужен? Понятно что в нём указывается тип данных (строка, число, булевое и т.д.)
  • Вопрос задан
  • 347 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
1) dev.mysql.com/doc/refman/5.7/en/show-profile.html
2) between пишется так: dev.mysql.com/doc/refman/5.7/en/comparison-operato...
Сравните со своим.
3) php.net/manual/en/pdostatement.bindparam.php , $data_type = PDO::PARAM_STR. Ещё что-то пояснять равзе надо?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы