我有一个非常简单的表单无效。我想要完成的是当用户点击更新按钮时,它们会显示一个填写了信息的表单。当他们更改信息并单击更新时,会将它们发送回主表单并显示所有更改。一切正常但更新。当您更改某些内容并单击更新时,不会更改任何内容。这是更新表单代码:
<h4>Update Record</h4>
<?PHP
$con=mysqli_connect("localhost", "root", "", "customers");
//check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysql_connect_error();
}
?>
<form action="update_process.php" method="get">
Band: <input type="text" name="artist" value="<?php echo $_GET['artist'] ?>"/><br/>
Album: <input type="text" name="title" value="<?php echo $_GET['title'] ?>" /><br/>
Format: <select name="format">
<option value="Compact Disc" name="compact disc">compact disc</option>
<option value="Album" name="album">album</option>
<option value="Cassette" name="cassette">cassette</option>
<option value="MP3" name="mp3">mp3</option>
</select><br/>
Notes: <TEXTAREA NAME="notes" ROWS="3" COLS="30"><?php echo $_GET['notes'] ?>
</TEXTAREA><br/>
<input type="submit" value="Update" />
</form>
这是update_process.php文件的代码:
<?php
$artist = $_GET['artist'];
$title = $_GET['title'];
$format = $_GET['format'];
$notes = $_GET['notes'];
//create connection to DB
$con=mysqli_connect("localhost", "root", "", "customers");
//check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE music SET title='$title', artist='$artist', format='$format', notes='$notes'
WHERE id='$id'";
if ($con->query($sql) === TRUE) {
header('Location:index.php');
} else {
echo "Error: " . $sql . "<br>" . $con->error;
}
?>
答案 0 :(得分:1)
在WHERE子句中你说id ='$ id',但是$ id值设置在哪里? 我认为$ id没有价值。
答案 1 :(得分:0)
我发现您的代码存在一些问题:
1 - 其中定义了$id
?
2 - 我猜id是一个整数字段,因此不需要'
周围的$id
;
答案 2 :(得分:0)
您混合了基于对象和基于功能的编程。你从基于功能开始,所以我会告诉你那样。要查询数据库,您需要运行:
mysqli_query($con,$sql);
而不是:
$con->query($sql)
您的代码还有其他一些安全方面的问题,但如果您不在意,请跳过我的其余部分。
在使用它们之前,您没有检查是否存在这些GET参数。使用:
if(isset($_GET['artist'],$_GET['track'],...)) {...}
您也没有转义查询字符串,使您的网站容易受到SQL注入攻击。使用:
$artist = mysqli_real_escape_string($con,$_GET['artist']);
祝你好运!只需阅读PHP文档,确保对整个脚本采用对象或函数方法。