需要使用PHP编辑表单帮助更新数据

需要使用PHP编辑表单帮助更新数据,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我正在尝试使用链接到以下ID的正确信息更新我的表。我将发布代码,以便大家都可以查看 我的问题是:一旦我提交了包含从数据库收到的所有详细信息的表单,一切都会成功。但当我点击submit时,它会重新指向另一个名为update_ac.php的页面。一切正常,除了mysql表中的数据没有得到更新 我想知道是否有人可以看一下代码,看看他们是怎么想的:非常感谢,反馈会很好。PS我不是最好的PHP程序员,还在学习 下面是edit.php-用户在其中编辑其信息: <?php session_start()

我正在尝试使用链接到以下ID的正确信息更新我的表。我将发布代码,以便大家都可以查看

我的问题是:一旦我提交了包含从数据库收到的所有详细信息的表单,一切都会成功。但当我点击submit时,它会重新指向另一个名为update_ac.php的页面。一切正常,除了mysql表中的数据没有得到更新

我想知道是否有人可以看一下代码,看看他们是怎么想的:非常感谢,反馈会很好。PS我不是最好的PHP程序员,还在学习

下面是edit.php-用户在其中编辑其信息:

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
$adminid = $_GET['id'];

//CONNECTION CODE WAS HERE

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");


echo("Logged In As: $UserName");
echo "<br />";
echo("We are editing Data for ID: $adminid");
echo "<br />";
echo "<a href=test.php>Go back to panel</a>";

$id=$_GET['id'];
// Retrieve data from database 
$sql="SELECT * FROM admin WHERE id='$id'";
$result=mysql_query($sql) or die(mysql_error());

$rows=mysql_fetch_array($result);
?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<form name="form1" method="post" action="update_ac.php">
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center"><strong>Name</strong></td>
<td align="center"><strong>Main Content</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="center"><input name="name" type="text" id="name" value="<? echo $rows['name']; ?>"></td>
<td align="center"><input name="mainContent" type="text" id="mainContent" value="<? echo $rows['mainContent']; ?>" size="15"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"></td>
<td align="center"><input type="submit" name="Submit" value="Submit"></td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</form>
</tr>
</table>

<?
mysql_close();
 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Edit Page</title>
</head>

<body>
<h2>Edit Page (<?php echo ("$adminid"); ?>)</h2>
</body>
</html>

信息现在得到更新,因此意味着我的ID变量出现了一些问题,这是因为您使用的是变量,而不是$\u POST变量

$sql="UPDATE admin SET name='$firstName', mainContent='$mainText' WHERE id='$id'";
应该是带有表单字段名称的post变量

$sql="UPDATE admin SET name='$_POST['firstName'], mainContent='$_POST['mainText']' WHERE id='$_POST['id']'";
如果随后将$id变量放入表单中的隐藏输入字段中,该文件也会将其拾取


快速回答,因为我出去吃午饭了。

快速看一眼,这是因为您使用的是变量,而不是$\u POST变量

$sql="UPDATE admin SET name='$firstName', mainContent='$mainText' WHERE id='$id'";
应该是带有表单字段名称的post变量

$sql="UPDATE admin SET name='$_POST['firstName'], mainContent='$_POST['mainText']' WHERE id='$_POST['id']'";
如果随后将$id变量放入表单中的隐藏输入字段中,该文件也会将其拾取


只是一个简单的回答,因为我出去吃午饭了。

看起来像是数据库转义的典型遗漏。您需要对sql查询中包含的任何字符串进行应用

懒惰的版本是:

$_POST = array_map("mysql_real_escape_string", $_POST);
$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];
否则,常常会出现无效的语法错误。在查询后使用,找出您的案例中出现的错误


另请参阅或继续阅读,以了解不太精细的数据库交互。

看起来像是数据库转义的典型省略。您需要对sql查询中包含的任何字符串进行应用

懒惰的版本是:

$_POST = array_map("mysql_real_escape_string", $_POST);
$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];
否则,常常会出现无效的语法错误。在查询后使用,找出您的案例中出现的错误


另请参阅或阅读,以了解不太精细的数据库交互。

这只是更新中的语法错误

在下一行中使用了2个分号

$result=mysql_query($sql) or die(mysql_error());;

这只是更新_ac.php中的一个语法错误

在下一行中使用了2个分号

$result=mysql_query($sql) or die(mysql_error());;


您尚未在
update\u ac.php
中定义
$id
。我强烈建议您阅读有关在代码中防止SQL注入的内容,如果不事先转义就直接将变量插入查询中是不安全的……在阅读了有关SQL注入的内容后,请仔细阅读准备好的SQL语句:谢谢您的帮助,我会看一看!Jonathon,你确定update_ac.php文件中的变量不是空的吗?您确定表单中的数据已移动到文件update_ac.php吗?您尚未在
update_ac.php
中定义
$id
。我强烈建议您阅读有关在代码中防止SQL注入的内容,如果不事先转义就直接将变量插入查询中是不安全的……在阅读了有关SQL注入的内容后,请仔细阅读准备好的SQL语句:谢谢您的帮助,我会看一看!Jonathon,你确定update_ac.php文件中的变量不是空的吗?您确定表单中的数据已移动到文件update_ac.php吗?您好,我在代码中尝试过这一点,但似乎没有在dreamweaver中执行。代码中似乎有错误。对不起,我赶时间。我刚刚意识到,您已将$u POST分配给sql上方的两个变量,但是最好转义这些值。正如其他人所说,你有两个;嗨,Ashley,是的,我有两个POST变量,你能想到其他的修复方法吗?我使用了mysql escape,没有任何区别,只是没有更新我的数据库。Ashely我还有一个问题,似乎你在帮助我:当我将行更改为:$sql=“UPDATE admin SET name='$firstName',mainContent='$mainText'WHERE id='1';id为1时,信息会立即更新..您好,我在代码中尝试过这个,但似乎没有在dreamweaver中执行。代码中似乎有错误。对不起,我赶时间。我刚刚意识到,您已将$u POST分配给sql上方的两个变量,但是最好转义这些值。正如其他人所说,你有两个;嗨,Ashley,是的,我有两个POST变量,你能想到其他的修复方法吗?我使用了mysql escape,没有任何区别,只是没有更新我的数据库。Ashely我还有一个问题,似乎你在帮助我:当我将行更改为:$sql=“UPDATE admin SET name='$firstName',mainContent='$mainText'WHERE id='1';id为1时,信息会立即更新。谢谢你,我从来没有注意到它!不幸的是,当提交发生时,我没有收到错误,它只是没有在SQL中更新我的表,不过感谢大家的提醒!由于页面是空的,我觉得这只是一个语法错误。请尝试添加标记并检查它是否有效。如果无效,您可以在脚本中确认错误。我不知道为什么不显示错误。我已修复了这两个错误,但不幸的是仍然无法工作,我所需要做的就是用更新sql方法更新数据库谢谢,我从来没有注意到!不幸的是,当提交发生时,我没有收到错误,它只是没有在SQL中更新我的表,不过感谢大家的提醒!由于页面是空的,我觉得这只是一个语法错误。请尝试添加一个标记并检查它是否有效。如果无效,您可以在脚本中确认错误。我不知道为什么不显示错误。我已修复了这两个错误,但不幸的是仍然不起作用,我需要它使用update sql方法更新数据库