PDO语句故障

  • 本文关键字:故障 语句 PDO php pdo
  • 更新时间 :
  • 英文 :


我用whenthenelse创建了一个PDO语句。

我唯一的问题是它不想从PDO语句中执行。如果我将整个SQL打印在print_r中,它将显示一个完美的查询。另外,当我在数据库上执行它时,它可以完美地运行并更新我想要的字段。

 public function sellNpcItems($items, $quantity, $npc_id)
 {
 try
 {
  $sql = "UPDATE npc_items SET available = CASE item_id";
  for($i=0;$i<count($items);$i++)
  {
      $sql .= " WHEN ".$items[$i]." THEN available - ".$quantity[$i];
  }
      $sql .= " ELSE available END WHERE npc_id = ".$npc_id;
      $sql = $this->dbh->prepare($sql);
      $sql->execute(array($npc_id));
      $this->dbh->commit();
      $result = $sql->fetchAll(PDO::FETCH_ASSOC);
      return $result;
  }
       catch(PDOException $e){echo 'Error ! '.$e->getMessage();die();}
  } 

上述查询的输出是:

PDOStatement Object ( [queryString] => UPDATE npc_items SET available = CASE item_id WHEN 57 THEN available - 1 ELSE available END WHERE npc_id = 1 )

如果我选择Querystring并将其直接粘贴到我的SQL Workbench中,则直接更新。当我尝试从PHP脚本更新它时。它拒绝更新(没有错误或任何内容(只是什么都没有发生。

你们中的任何人都有解决方案吗?

好吧,我已经解决了问题。有点愚蠢地监督这一问题,但是当您使用this->dbh->prepare()而没有从 execute推出的任何变量时,它会失败..并且不会更新。

最新更新