首页 > 解决方案 > PHP-> PDO 更新如果选择返回少于 10 行,否则插入

问题描述

在更新/插入之前计数。

如此简化,这就是我想要做的:

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 }

但是我无论如何都无法访问该计数..

标签: phpmysqlpdo

解决方案


我实际上的意思是使用 mysqlcount()函数而不是 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 ) {
     .....

对于更长的答案,PDOrowcount()不适用于select带有mysql.

如果关联 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,则某些数据库可能会返回该语句返回的行数。但是,不能保证所有数据库都具有此行为,并且不应依赖于可移植应用程序。

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


推荐阅读