Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以相同的形式创建和更新_Php_Pdo - Fatal编程技术网

Php 以相同的形式创建和更新

Php 以相同的形式创建和更新,php,pdo,Php,Pdo,我试图使用相同的视图来创建和更新条目,创建工作正常,但是当我尝试更新时,我得到了这个SQL语法错误,但是我在模型中看不到语法错误 致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行的“TABLE articles SET title='ewe',text='ew',category_id='1',其中id='1''附近使用的正确语法 我怀疑错误来自$action和$_GE

我试图使用相同的视图来创建和更新条目,创建工作正常,但是当我尝试更新时,我得到了这个SQL语法错误,但是我在模型中看不到语法错误

致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行的“TABLE articles SET title='ewe',text='ew',category_id='1',其中id='1''附近使用的正确语法


我怀疑错误来自$action和$_GET['id'],但我找不到如何在更新函数中修复此问题。这是无效的SQL语法
更新表文章…
。它应该读
更新文章…

SQL语法错误消失,但值没有更新,你知道吗?你检查过你服务器的错误日志@mohsen吗?@JayBlanchard你是什么意思?(PHP初学者)每台服务器都有错误日志。当某些操作不起作用时,这些错误会被记录下来。此外,请检查/调试更新/创建调用的返回值。仅仅假设调用可以工作是一种不好的做法(正如第一个代码块当前所做的那样)。请不要编辑掉已为您提供解决方案的原始错误。如果你有另一个错误,请接受她的回答,并发布另一个问题。
<?php

    use App\Model\ArticleModel;

    if(isset($article)) { 
      $id = $article['id'];
      $title = $article['title'];
      $text = $article['text'];
      $category_id = $article['category_id'];

      $action = "?page=form&id=$id";
    }

    if (!empty($_POST)) {
      $id = $_GET['id'];
      $title = $_POST['title'];
      $text = $_POST['text'];
      $category_id = $_POST['category_id'];

      if(isset($_GET['id'])) {
        $this->modelName->update($id,$title, $text, $category_id);
        // $this->modelName is actually correct, it is defined in the core
      } else {
        $this->modelName->create($title, $text, $category_id);
      }
      header("Location: index.php");
    }
?>

<div class="container">
<h1>Save Article</h1>
<form action="<?= isset($action)?$action:'?page=form' ?>" method="post">
  <div class="form-group">
    <label for="title">Title</label>
    <input name="title" value="<?= !empty($title)?$title:'' ?>" type="text" class="form-control" id="title" aria-describedby="title">
  </div>
  <div class="form-group">
    <label for="text">Text</label>
    <textarea name="text" class="form-control" id="text"><?= !empty($text)?$text:'' ?></textarea>
  </div>
  <div class="form-group">
    <label for="category">Category</label>
    <select name="category_id" value="<?= !empty($category_id)?$category_id:'' ?>" id="category" class="form-control">
        <?php foreach ($categories as $category): ?>
            <option value="<?= $category["id"] ?>" <?php if(isset($article) && $category["id"] == $article['category_id']) { echo 'selected="selected"';} ?>><?= $category["name"] ?></option>
        <?php endforeach; ?>
    </select>
  </div>
  <button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
public function create($title, $text, $category_id) {
        return $this->db->save(
            'INSERT INTO articles SET title = ?, text = ?, category_id = ?', [$title, $text, $category_id]
        );
    }

public function update($id, $title, $text, $category_id) {
        return $this->db->save(
            "UPDATE TABLE articles SET title = ?, text = ?, category_id = ? WHERE id = ?", [$title, $text, $category_id, $id]
        );
    }