【问题标题】:MySQL Insert using PDO in PHP [closed]在 PHP 中使用 PDO 插入 MySQL [关闭]
【发布时间】:2014-09-25 21:07:15
【问题描述】:

我一直在尝试获取一个表单,以便使用表单将记录插入 MySQL 数据库,但由于某种原因,它在我身上出错,我不知道为什么。

这是处理请求的代码:

if ($_SERVER['REQUEST_METHOD']=='POST'){

    // database connection 

    try {
        $dbh = new PDO('mysql:host='.$host.';dbname='.$dbName, $dbUser, $dbPass);
        $dbh -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $dbh -> exec("SET NAMES 'utf8'");

    } catch (Exception $e) {
        echo "Error!: " . $e->getMessage() . "<br/>";
        die();
    }

    // new data 

    $title = $_POST["txtTitle"]; 

    $description = $_POST["txtDesc"]; 

    $content = $_POST["txtContent"];

    $sql = "INSERT INTO tblPageContent          
            SET (PageTitle, Description, PageContent) 
            VALUES (:title, :desc, :content)"; 

    try {
    $update = $dbh->prepare($sql); 
    $update->bindParam(":title",$title, PDO::PARAM_STR);
    $update->bindParam(":desc",$description, PDO::PARAM_STR);
    $update->bindParam(":content",$content, PDO::PARAM_STR);

    $update->execute();
    $id = $update->dbh->lastInsertId();
    $update->dbh->commit();
    echo $id;

    } catch (Exception $e) {

    echo "Data could not be updated in the database.";
    echo $e;
    exit;
    }
}

每当我尝试使用它时,我都会得到这样的结果:

带有消息“SQLSTATE[42000]”的异常“PDOException”:语法错误 或访问冲突:1064 您的 SQL 语法有错误;查看 与您的 MySQL 服务器版本相对应的手册 '(PageTitle, Description, PageContent) VALUES 附近使用的语法 ('Awards', 'This is a test', '' at line 2'

我已尝试调整 SQL 语法,但仍无法正常工作。我这里有什么遗漏吗?

【问题讨论】:

  • INSERT INTO tblPageContent (PageTitle, Description, PageContent) VALUES (:title, :desc, :content)INSERT INTO tblPageContent SET PageTitle = :title, Description = :desc, PageContent = :content
  • 请不要将代码转储到 cmets 中。
  • @JayBlanchard 这是对我的评论吗?如果是这样,这个问题是一个基本的语法错误,如果 OP RTM - dev.mysql.com/doc/refman/5.6/en/insert.html AND 应该被关闭,这个问题就会得到解决,所以不值得创建一个答案。
  • 这是您的电话@Sean,但 cmets 中的代码转储很难阅读,并且缺乏空间来阐述您所做的事情。 YMMV¯_(ツ)_/¯
  • @JayBlanchard 这可能是真的,但在这个例子中我放了 2 个简单的 mysql 查询,而不是复杂的连接,甚至是 php 代码。

标签: php mysql pdo insert


【解决方案1】:

您的insert 语法错误。

正确的语法是:

insert into tblPageContent (pageTitle, Description, PageContent)
values (:title, :desc, :content)

我推荐你have MySQL reference manual在手

【讨论】:

  • 啊,明白了。我确实从更新页面重新编辑了这个。我必须对此更加小心。
【解决方案2】:

在您的 SQL 中,取出第一个 ( 之前的 SET。您在更新中使用 SET,而不是插入。

【讨论】:

  • 我按照您的建议更改了该行,但错误仍在触发。
  • 除非您使用的是一些非常旧的 php 版本,否则您所说的似乎并非如此。以this example.
  • @Daedalus,这可能是真的。我正在取出-&gt; 部分。
猜你喜欢
  • 2020-12-24
  • 2023-04-10
  • 1970-01-01
  • 2016-07-10
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
相关资源
最近更新 更多