我对mysql和php(主要是mysql)都非常新,我甚至不确定我是否掌握了所有的基础知识,因为我更像是一个边做边学的人。 因此,我的代码由网络上的不同解释组成,其中一些可能是错误的。 所以我试图从数据库中获取数据,将其放入html表单,编辑它,并使用新数据更新数据库。 到目前为止,数据已正确加载到表单中,并且通过大量的故障排除,我得出的结论是,即使上传工作也应该如此,除了字段为空。所以我想我的问题必须是从表单中获取数据到更新查询。
这是我的代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
<?php
require 'connect.php';
$result = $db->query("SELECT * FROM test") or die ($db->error);
while($row = mysqli_fetch_array($result))
{
$name = $row['name'];
$school = $row['school'];
$email = $row['email'];
$grade = $row['grade'];
$workshop = $row['workshop'];
$id = $row['id'];
?>
<form method="post" action="#">
<?=$id?>
<input name="nameid" type="text" value="<?=$name?>">
<input name="emailid" type="text" value="<?=$email?>">
<input name="gradeid" type="text" value="<?=$grade?>">
<input name="workshopid" type="text" value="<?=$workshop?>">
<input name="schoolid" type="text" value="<?=$school?>">
<?php }
session_start();
$_SESSION['storage'] = $_POST;
?>
<input name="update" type="submit" id="update" value="Update">
</form>
<?php
if(isset($_POST['update']))
{
$link = mysqli_connect("localhost", "892847", "123456789", "892847");
// Check connection
if($link === false){
die("Couldn't connect. " . mysqli_connect_error());
}
session_start();
$name = $_SESSION['storage']['nameid'];
$school = $_SESSION['school']['schoolid'];
$email = $_SESSION['email']['emailid'];
$grade = $_SESSION['grade']['gradeid'];
$workshop = $_SESSION['workshop']['grade'];
$id = $_SESSION['id'];
$sql = "UPDATE test SET name = '$name', email = '$email', school = '$school', grade = '$grade', workshop = '$workshop' WHERE id = '8'";
if(mysqli_query($link, $sql)){
echo "Records added successfully. $name";
print_r($_POST['nameid']);
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
}
?>
</body>
</html>
我知道会话混乱看起来很奇怪,但我在某处读到了PHP脚本中没有的信息,除非你进行会话。
我真的很感激任何帮助 - 我一直在与它斗争大约48小时
答案 0 :(得分:0)
这是一种基本方法,使用最简单的程序php。
首先,您将数据从mysql加载到php数组中,如下所示,假设您已经建立了连接,id
是该特定行的ID
$row = mysql_fetch_array(mysql_query("SELECT * FROM test WHERE `id` = '$id'"));
找一种方法来确保该网页显示所需的ID,例如,您可以使用$id = $_GET[row];
,在这种情况下,您的网址将为http://url?row=id
在html代码中使用echo如下
<form action="process.php" method="POST">
<input type="hidden" name="id" value="<?php echo $_GET['row']" ?>" >
<input type="text" name="nameid" value="<?php echo $row['nameid'] ?>" >
...
</form>
忘记会话,当你按下提交时,它应该将所有这些数据带入全局变量$ _POST或$ _GET中的process.php
,具体取决于您在<form method>
中选择的方法。
现在在process.php中,使用
$nameid = mysql_real_escape_string($_POST['nameid']);
$id = $_POST['id'];
$sql = mysql_query("UPDATE test SET `name_id` = '$nameid' WHERE `id` = '$id'");
if($sql) {
echo "update successful";
}
毋庸置疑,您需要在两个页面中使用数据库连接。