PHP pdo : update + insert and then select returns null

标签 php mysql pdo

由于某种原因,执行时此 php 代码返回 NULL...cud any1 请帮助纠正它?

public function like($pid)
        {
             $uid = escape($_SESSION['user']);
             $sql = $this->_db->prepare("UPDATE postsinitial SET likes = likes+1 WHERE pid = :m;INSERT IGNORE INTO userlikedposts (ulp_userid,ulp_postid) VALUES (:k, :m)");
             $sql->bindValue(':k', $uid);
             $sql->bindValue(':m', $pid);
             $sql->execute();

             $query = $this->_db->prepare("SELECT likes FROM postsinitial WHERE pid = :n");
             $query->bindParam(':n', $pid);
             $query->execute();
             while($rows = $query->fetch())
             {
                return $rows['likes'];
             }

         }

但是当我分别运行查询的两个部分时,即注释掉 $sql 批处理代码并单独运行 $query 批处理时,它可以工作并返回一个值..,它工作正常..但不能合并为声明..那么我该如何按原样运行它?

我也为选择查询尝试过这个模型,结果仍然相同:

$query = $this->_db->prepare("SELECT likes FROM postsinitial WHERE pid = :n");
             $query->bindParam(':n', $pid);
             $query->execute();
             while($rows = $query->fetch(PDO::FETCH_ASSOC))
             {
                return $rows[0]['likes'];
             }

最佳答案

答案很简单:

您应该一个一个地运行您的查询,而不是将它们全部塞进一个调用中。运行插入查询分隔 rom 更新,你会没事的。

     public function like($pid)
     {
         $sql = "UPDATE postsinitial SET likes = likes+1 WHERE pid = ?";
         $this->_db->prepare($sql)->execute($_SESSION['user']);

         $sql = "INSERT IGNORE INTO userlikedposts (ulp_userid,ulp_postid) VALUES (?, ?)";
         $this->_db->prepare($sql)->execute([$_SESSION['user'], $pid]);

         $stmt = $this->_db->prepare("SELECT likes FROM postsinitial WHERE pid = ?");
         $stmt->execute([$pid]);
         return $stmt->fetchColumn();
     }

关于PHP pdo : update + insert and then select returns null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41311130/

相关文章:

php - 按添加日期对文件进行排序 Laravel PHP

php - Mysql 在 html 表中返回重复项

php - 将 mysql 连接移出到另一个类中

mysql - 这段代码可以安全地防止注入(inject)吗?

php - 上传图片大于 1.0MB 时 MySQL 服务器已经消失

在编辑页面上选中 php 复选框

php - 如何在 Laravel 5.2 中创建新用户(无表单)?

连接查询中的mysql组行

php - 根据所选值显示选项

php - 从另一个表 php 的值中对值进行排序