Считайте перед обновлением / вставкой.

Так упрощено, вот что я хочу сделать:

if (select >= 10) { pdo -> Update } else { pdo -> insert }

Моя идея заключалась в использовании запроса:

$select_today_usage = $DBcon->prepare("SELECT kood FROM koodid k WHERE STR_TO_DATE(kpv,'%d.%m.%Y')=current_date");

а затем проверьте количество строк:

if ($count = $update_kood->rowCount()>=10) {//PDO update } else { //PDO insert }

Но я все равно не могу получить доступ к этому счетчику ..

-1
user8579885 30 Ноя 2018 в 21:48

1 ответ

Лучший ответ

На самом деле я хотел использовать функцию mysql count(), а не PHP. С вашим текущим подходом вы выберете каждую запись в своей БД (что может привести к высоким затратам памяти). Я бы сделал:

SELECT count(*) as the_count 
FROM koodid k 
WHERE STR_TO_DATE(kpv,'%d.%m.%Y')=current_date and kasutatud=1

Затем выберите эту 1 строку и получите доступ к индексу the_count.

$select_today_usage = $DBcon->prepare("SELECT kood FROM koodid k WHERE STR_TO_DATE(kpv,'%d.%m.%Y')=current_date");
$select_today_usage->execute();
$row = $select_today_usage->fetch(PDO::FETCH_ASSOC);
if($row['the_count'] >= 10 ) {
     .....

Для более длинного ответа PDO rowcount() не работает с операторами select с mysql.

Если последний оператор SQL, выполненный связанным PDOStatement, был оператором SELECT, некоторые базы данных могут возвращать количество строк, возвращаемых этим оператором. Однако такое поведение не гарантируется для всех баз данных и не должно зависеть от переносимых приложений.

- http://php.net/manual/en/pdostatement.rowcount.php

0
user3783243 30 Ноя 2018 в 20:02