我正在使用以下代码来更新记录。糟糕的是它没有更新记录,而是添加了新记录。PDO UPDATE创建新记录而不是更新一个
我在做什么错?我希望它能更新记录而不是创建一个现在的记录。
我修改URL看起来是这样的:http://randomsite.com/modify.php?id=1
Modify.php代码:
<?php
require_once("connect.php");
$query = "SELECT * FROM cars WHERE id = :id";
$result = $odb->prepare($query);
$result->execute(array(':id' => $_REQUEST['id']));
while ($row = $result->fetch(PDO::FETCH_ASSOC)) { ?>
<h1>Modify a car</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Brand: <input type="text" name="brand" value="<?php echo $row['brand']; ?>" /><br />
Model: <input type="text" name="model" value="<?php echo $row['model']; ?>" /><br />
Year: <input type="text" name="year" value="<?php echo $row['year']; ?>" /><br />
ID: <input type="text" name="id" value="<?php echo $row['id']; }?>" /><br />
<input type="submit" value="Modify" />
</form>
<?php
if(isset($_POST['submit'])) {
$id = $_POST['id'];
$brand = $_POST['brand'];
$model = $_POST['model'];
$year = $_POST['year'];
$q = "UPDATE cars WHERE id = $_GET[id] (id, brand, model, year) VALUES(:id, :brand, :model, :year)";
$query = $odb->prepare($q);
$results = $query->execute(array(
":id" => $id,
":brand" => $brand,
":model" => $model,
":year" => $year,
));
}
?>
你有错的SQL语法。更新通常看起来像这样:UPDATE table_name SET field1 = $ somevalue,field2 = $ anothervalue WHERE somefield = $ thirdvalue – cen
对观看者的迟到笔记 - 原始问题似乎已更改为已更正的代码,因此问题已消失。编辑:回滚。 –