gpt4 book ai didi

php - 使用 PHP 更新 MySQL 条目

转载 作者:行者123 更新时间:2023-11-29 19:40:10 25 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中有一个包含 4 列(id、tvDate、tvCourse、tvRoom)的表

我创建了一个连接到数据库的 php 页面,并在 HTML 表中返回数据库表的行。我在每一行添加了一个编辑链接,以便能够编辑条目。该链接会调用带有行 id 的 php 文件(例如:edit.php?id=1)并显示您可以更改的当前内容。

Screenshot

到目前为止,一切正常,但我的问题是,当您更改内容并单击更新按钮时,我收到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id=1' at line 638

(相同的 url edit.php?id=1)并且记录不会更新。

这是我的代码:

<?php include('includes/database.php'); ?>
<?php
//Assign get variable
$id = $_GET['id'];

//Create select query
$query ="SELECT * FROM tvdbase
WHERE id = $id";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
if($result = $mysqli->query($query)){
//Fetch object array
while($row = $result->fetch_assoc()) {
$tvDate = $row['tvDate'];
$tvCourse = $row['tvCourse'];
$tvRoom = $row['tvRoom'];
}
$result->close();
}
?>
<?php
if($_POST){
//Assign get variable
$id = $_GET['id'];

//Assign Variables
$tvDate = mysql_real_escape_string($_POST['tvDate']);
$tvCourse = mysql_real_escape_string($_POST['tvCourse']);
$tvRoom = mysql_real_escape_string($_POST['tvRoom']);

//Create update
$query = "UPDATE tvdbase
SET
tvDate='$tvDate',
tvCourse='$tvCourse',
tvRoom='$tvRoom',
WHERE id=$id
";
$mysqli->query($query) or die($mysqli->error.__LINE__);
$msg="Updated";
header('Location:index.php?msg='.urlencode($msg).'');
exit;
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Edit Page</title>
</head>
<body>

<form role="form" method="post" action="new.php?id=<?php echo $id; ?>">
<label>Date</label>
<input name="tvDate" type="text" value="<?php echo $tvDate; ?>" placeholder="Enter Date">
<label>Course</label>
<input name="tvCourse" type="text" value="<?php echo $tvCourse; ?>" placeholder="Enter Course">
<label>Room</label>
<input name="tvRoom" type="text" value="<?php echo $tvRoom; ?>" placeholder="Enter Room">
<input type="submit" value="Update Room" />
</form>


</body>
</html>

我怀疑我的问题出在 POST 方法中的某个地方。我对 PHP 和 mySQL 还很陌生,所以我提前对任何错误的编码表示歉意:)

最佳答案

这是您的代码存在的问题。

您将 mysql_ 函数与 MySQLi_ API 混合在一起,但它们不会混合。

这是 mysql_real_escape_string() 的所有实例,需要替换为 mysqli_real_escape_string($mysqli, $_POST['var'])

  • 改用准备好的语句,它们更安全。

那么 UPDATE 查询的 WHERE 子句中有一个尾随逗号:

tvRoom='$tvRoom',

在这里:

UPDATE tvdbase
SET
tvDate='$tvDate',
tvCourse='$tvCourse',
tvRoom='$tvRoom', <<< right there, remove it
WHERE id=$id

关于php - 使用 PHP 更新 MySQL 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401309/

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