以 PHP 形式编辑 MYSQL 行
Posted
技术标签:
【中文标题】以 PHP 形式编辑 MYSQL 行【英文标题】:Edit MYSQL Row in PHP form 【发布时间】:2011-10-18 07:33:37 【问题描述】:我以前做过这个,但由于某种原因,这次我无法让它工作! 我正在为此拔头发!因为没有错误,所以不会更新数据库。
基本上我有一个包含学生数据的表格......
ID | IMGNU |名字 |姓氏 |联邦调查局
我们以第 233 行为例。
我可以通过前往 view.php?ID=233 查看特定行
然后就可以了,但是现在我希望能够去 edit.php?ID=233 它应该加载一个表单,该表单已经包含第 233 行的信息。 然后我应该能够编辑字段中的数据并提交表单, 这将改变数据库中的信息。
这是我已经拥有的。
edit.php
<?php
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
echo "Tick <p>";
mysql_select_db("students") or die(mysql_error());
echo "Tick";
$UID = $_GET['ID'];
$query = mysql_query("SELECT * FROM stokesley_students WHERE id = '$UID'")
or die(mysql_error());
while($row = mysql_fetch_array($query))
echo "";
$firstname = $row['firstname'];
$surname = $row['surname'];
$FBID = $row['FBID'];
$IMGNU = $row['IMGNU'];
;
?>
<form action="update.php?ID=<?php echo "$UID" ?>" method="post">
IMGNU: <input type="text" name="ud_img" value="<?php echo "$IMGNU" ?>"><br>
First Name: <input type="text" name="ud_firstname" value="<?php echo "$firstname" ?>"><br>
Last Name: <input type="text" name="ud_surname" value="<?php echo "$surname" ?>"><br>
FB: <input type="text" name="ud_FBID" value="<?php echo "$FBID" ?>"><br>
<input type="Submit">
</form>
这里是 update.php
<
?php
$ud_ID = $_GET["ID"];
$ud_firstname = $_POST["ud_firstname"];
$ud_surname = $_POST["ud_surname"];
$ud_FBID = $_POST["ud_FBID"];
$ud_IMG = $_POST["ud_IMG"];
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
echo "MySQL Connection Established! <br>";
mysql_select_db("students") or die(mysql_error());
echo "Database Found! <br>";
$query="UPDATE * stokesley_students SET firstname = '$ud_firstname', surname = '$ud_surname',
FBID = '$ud_FBID' WHERE ID ='$ud_IMG'";
mysql_query($query);
echo "<p>Record Updated<p>";
mysql_close();
?>
任何想法都将不胜感激,也许我只是错过了一些愚蠢的东西?
谢谢 亚历克斯
【问题讨论】:
别忘了修复那些 sql 注入! 如何获得这个 $UID = $_GET['ID']; 【参考方案1】:"UPDATE * stokesley_students SET firstname = '$ud_firstname', surname = '$ud_surname',
FBID = '$ud_FBID' WHERE ID ='$ud_IMG'"
那个查询是错误的,去掉星号。另外,你不知道是否有错误,因为你没有检查mysql_query
的返回类型或者使用mysql_error
。
【讨论】:
感谢您的快速回复,我已通过以下回复对问题进行了分类。再次感谢。【参考方案2】:edit.php - 有一些变化
<?php
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
mysql_select_db("students") or die(mysql_error());
$UID = (int)$_GET['ID'];
$query = mysql_query("SELECT * FROM stokesley_students WHERE id = '$UID'") or die(mysql_error());
if(mysql_num_rows($query)>=1)
while($row = mysql_fetch_array($query))
$firstname = $row['firstname'];
$surname = $row['surname'];
$FBID = $row['FBID'];
$IMGNU = $row['IMGNU'];
?>
<form action="update.php" method="post">
<input type="hidden" name="ID" value="<?=$UID;?>">
IMGNU: <input type="text" name="ud_img" value="<?=$IMGNU;?>"><br>
First Name: <input type="text" name="ud_firstname" value="<?=$firstname?>"><br>
Last Name: <input type="text" name="ud_surname" value="<?=$surname?>"><br>
FB: <input type="text" name="ud_FBID" value="<?=$FBID?>"><br>
<input type="Submit">
</form>
<?php
else
echo 'No entry found. <a href="javascript:history.back()">Go back</a>';
?>
update.php(除了星号,您的查询还匹配ID
和$ud_IMG
变量)
<?php
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
mysql_select_db("students") or die(mysql_error());
$ud_ID = (int)$_POST["ID"];
$ud_firstname = mysql_real_escape_string($_POST["ud_firstname"]);
$ud_surname = mysql_real_escape_string($_POST["ud_surname"]);
$ud_FBID = mysql_real_escape_string($_POST["ud_FBID"]);
$ud_IMG = mysql_real_escape_string($_POST["ud_IMG"]);
$query="UPDATE stokesley_students
SET firstname = '$ud_firstname', surname = '$ud_surname', FBID = '$ud_FBID'
WHERE ID='$ud_ID'";
mysql_query($query)or die(mysql_error());
if(mysql_affected_rows()>=1)
echo "<p>($ud_ID) Record Updated<p>";
else
echo "<p>($ud_ID) Not Updated<p>";
?>
【讨论】:
【参考方案3】:更新查询错误。您需要告诉它具体是哪个表然后是哪些字段。星号仅用于选择语句。
如果您检查查询是否成功,也会很有帮助。看看下面。我已经稍微改写了你的代码。我还允许使用 REQUEST 来自 POST 或 GET 的 ID。我删除了 mysql_close() 调用,因为它完全不需要,因为它会在脚本停止运行时关闭。
<?php
$ud_ID = $_REQUEST["ID"];
$ud_firstname = $_POST["ud_firstname"];
$ud_surname = $_POST["ud_surname"];
$ud_FBID = $_POST["ud_FBID"];
$ud_IMG = $_POST["ud_IMG"];
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
echo "MySQL Connection Established! <br>";
mysql_select_db("students") or die(mysql_error());
echo "Database Found! <br>";
$query = "UPDATE stokesley_students SET firstname = '$ud_firstname', surname = '$ud_surname',
FBID = '$ud_FBID' WHERE ID = '$ud_ID'";
$res = mysql_query($query);
if ($res)
echo "<p>Record Updated<p>";
else
echo "Problem updating record. MySQL Error: " . mysql_error();
?>
PHP mysql_query 函数快速小参考:http://nl.php.net/manual/en/function.mysql-query.php
此外,我敢打赌,您会想要一些很好的教程来帮助您学习 PHP 和 MySQL。看看这个网站:http://net.tutsplus.com/category/tutorials/php/
【讨论】:
感谢您的帮助,将查看其中的一些教程。 没问题。也请投票给你喜欢的答案,不要忘记选择你选择的答案作为获胜者。以上是关于以 PHP 形式编辑 MYSQL 行的主要内容,如果未能解决你的问题,请参考以下文章
使用php从mysql数据库中获取数据,以所见即所得的形式显示以进行编辑
内联可编辑行以使用 ajax php 更新数据库 mysql 中的每个记录
如何以ms访问形式将mysql中数据库中的数据或表显示为可编辑? (像列表框一样可编辑)