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

时间:2018-11-30 18:48:01

标签: php mysql pdo

在更新/插入之前计数。

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

expo-cli start

我的想法是使用查询:

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");

但是我还是无法访问该计数。

1 个答案:

答案 0 :(得分: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

然后获取该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的{​​{1}}语句。

  

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

-https://github.com/yossarian21/import-spec