PHP - > PDO更新如果select返回少于10行,则插入

问题描述 投票:-1回答:1

更新/插入前计数。

这简化了我想做的事情:

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 }

但无论如何我无法访问这个数量..

php mysql pdo
1个回答
0
投票

我实际上是想使用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()不适用于使用selectmysql语句。

如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序。

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

© www.soinside.com 2019 - 2024. All rights reserved.