我有一个MySQL数据库,其中有一个包含4列的表(id,tvDate,tvCourse,tvRoom)
我创建了一个连接数据库的php页面,并在HTML表格中返回数据库表格的行。我在每一行都添加了一个编辑链接,以便能够编辑条目。该链接调用带有行ID的php文件(例如:edit.php?id = 1)并显示当前可以更改的内容。
到目前为止,一切正常但我的问题是,当您更改内容并单击更新按钮时,我收到以下错误:
您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在#< WHERE id = 1'附近使用正确的语法。在第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的新手,所以我提前为任何不良编码道歉:)
答案 0 :(得分:0)
这就是我用这种方式编写SELECT和UPDATE查询的原因......
SELECT x
, y
, z
FROM my_table;
这使得这种错误几乎不可能。
答案 1 :(得分:0)
以下是您的代码存在的问题。
您将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