sql 插入 php 表单失败

sql INSERT with a php form failing

我有一个更新表单,我正在尝试启用更新字段但在提交时很难更新字段 - 也许我在这里遗漏了一些非常明显的东西。

这是我的表格:

<form action="actions/updateDoc.php" method="POST">

    <input type="text" value="<?php echo $doc['doc_title'] ?>" name="doc_title" />
    <br />

    <input type="submit" value="Update" name="submit" />    
</form>

这是执行该操作的脚本:

    <?php

    if(isset($_POST["submit"])){
    $hostname='localhost';
    $username='******';
    $password='******';

    try {

    $dbh = new PDO("mysql:host=$hostname;dbname=******",$username,$password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line

$doc_title = $_POST['doc_title'];

$sql = "UPDATE doc_list (doc_title) SET ('".$_POST["doc_title"]."')";

if ($dbh->query($sql)) {
    header ('Location: ../docEdit.php');
}
else{
}

$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}

}
?>

脚本运行但出现空白屏幕且未发生更新。我现在已经取出一些代码来显示仅更新 1 行,我收到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(doc_title) SET ('Document content sdfsd')' at line 1

首先,将 doc_id 添加到您的表单(作为隐藏输入)-

<form action="actions/updateDoc.php" method="POST">

    <input type="text" value="<?php echo $doc['doc_title'] ?>" name="doc_title" />
    <input type="hidden" value="<?php echo $doc['doc_id'] ?>" name="doc_id" />
    <br />

    <input type="submit" value="Update" name="submit" />    
</form>

然后更改您的 php 代码以获取 doc_id(并使用准备好的 statement/placeholders)-

<?php

    if(isset($_POST["submit"])){
    $hostname='localhost';
    $username='******';
    $password='******';

    try {

    $dbh = new PDO("mysql:host=$hostname;dbname=******",$username,$password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line



$sql = "UPDATE doc_list SET doc_title = :doc_title WHERE doc_id = :doc_id";
$query = $dbh->prepare($sql);
$query->execute(array(":doc_title"=>$_POST["doc_title"], ":doc_id"=> $_POST["doc_id"]));

if ($query) {
    header ('Location: ../docEdit.php');
}
else{
}

$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}

}
?>