更新/插入前计数。
这简化了我想做的事情:
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 }
但无论如何我无法访问这个数量..
我实际上是想使用mysql count()
函数而不是PHP的。使用您当前的方法,您将选择数据库中的每个记录(这可能导致高内存成本)我会这样做:
SELECT count(*) as the_count
FROM koodid k
WHERE STR_TO_DATE(kpv,'%d.%m.%Y')=current_date and kasutatud=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
语句。
如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。