gpt4 book ai didi

php - PDO UPDATE 创建一个新记录而不是更新一个记录

转载 作者:可可西里 更新时间:2023-11-01 00:49:07 25 4
gpt4 key购买 nike

我正在使用以下代码来更新记录。不好的是它没有更新记录,而是添加了新记录。

我做错了什么?我希望它更新记录而不是创建一个现在的记录。

我的修改 url 如下所示:http://randomsite.com/modify.php?id=1

修改.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 应该看起来更像这样:

   $q = "UPDATE cars SET 
id = :id,
brand = :brand,
model = :model,
year = :year
WHERE id = :oldid";

$query = $odb->prepare($q);
$results = $query->execute(array(
":id" => $id,
":brand" => $brand,
":model" => $model,
":year" => $year,
":oldid" => $_GET['id'],
));

作为旁注,尽量不要在您的 SQL 中放置变量(例如您的 $_GET['id']),使用 PDO 的部分想法是避免这样做。

关于php - PDO UPDATE 创建一个新记录而不是更新一个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com