使用PDO语句从表中删除


Delete From table with PDO Statement

嘿,伙计们,对不起,但我的英语不太好。我在执行删除表方法时遇到了一个问题。当我进行var_dump()查询时,它给了我一个正确的查询,如下所示:

 public 'queryString' => string 'DELETE FROM `test` WHERE  `id` = ? LIMIT 1' .

在执行之前,我检查了所有步骤,所有步骤都返回了正确的查询。当我执行时,我得到了这样的错误:

 SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.test' doesn't exist

这是我的代码:

            use PDO;
            use PDOException;
            class Delete extends Query
            {
                 public $where = array();
                 public $params = array();
                 public $limit = 1;
                 private function fieldClause($field)
                 {
                      return $filed = "`$field`";
                 }
                 public function where($field, $operation, $value)
                 {
                 $field = $this->fieldClause($field);
                 $this->where = " $field $operation ?";
                 $this->params[] = $value;
                 return $this;
                 }
                 public function limit($limit)
                 {
                 $this->limit = $limit;
                 return $this;
                 }
                 private function buildSql()
                 {
                 $sql = "DELETE FROM $this->table";
                 $sql .= " WHERE $this->where";
                 $sql .= " LIMIT $this->limit";
                 var_dump($sql);
                 return $sql;
                 }
                 protected function runSQL($debug = false)
                 {
                      $sql = $this->buildSql();
                      if ($debug) {
                      Log::query($sql, $this->params);
                      }
                      $this->dbh->beginTransaction();
                      try {
                      $query = $this->dbh->prepare($sql);
                      var_dump($this->params);
                      foreach ($this->params as $key => $val) {
                      $type = is_null($val) ? PDO::PARAM_NUL : PDO::PARAM_STR;
                      $type = is_bool($val) ? PDO::PARAM_BOOL : PDO::PARAM_STR;
                      $type = is_integer($val) ? PDO::PARAM_INT : PDO::PARAM_STR;
                      $query->bindValue($key+1, $val, $type);
                      var_dump($query);
                      }
                      $query->execute();

                      return $query;
                      } catch (PDOException $e) {
                            $this->dbh->rollBack();
                            Log::error($e);
                        }
                  }
           }

在这里我运行这个方法:

     require_once 'autoload.php';
     $db = new 'DBWork'DBWork();
     $del = $db->delete('test')->where('id', '=', 3);
     $del->deleteOne(true);

错误很容易解释:表不存在。使用的格式如下:

database-name.table-name

因此,您当前的数据库(使用查询USE databaseName选择一个数据库)是"test",而您试图删除的表是"test",因此表示法为"test.test"