PHP表单更新mysql数据库未完成更新

PHP表单更新mysql数据库未完成更新,php,mysql,database,edit,Php,Mysql,Database,Edit,因此,我一直在为我的发票管理系统修补mysql数据库更新功能,但不知为什么,我似乎无法让它实际编辑mysql数据库中的记录。下面是我的edit.php页面的代码 <?php $con = mysql_connect("localhost", "name", "password"); if (!$con) { die("Can not connect: " . mysql_error()); } mysql_select_db("inventory",$con); if (isset($

因此,我一直在为我的发票管理系统修补mysql数据库更新功能,但不知为什么,我似乎无法让它实际编辑mysql数据库中的记录。下面是我的edit.php页面的代码

<?php 
$con = mysql_connect("localhost", "name", "password");
if (!$con) {
die("Can not connect: " . mysql_error());
}
mysql_select_db("inventory",$con);

if (isset($_POST['update'])){
$UpdateQuery = "UPDATE invoice SET Inv #='$_POST[inv_number]', Date Type='$_POST[date_type]', ID='$_POST[id]' WHERE id='$_POST[id]'";               
mysql_query($UpdateQuery, $con);
};

$sql = "SELECT * FROM invoice";
$myData = mysql_query($sql,$con);
echo "<table border=1>
<tr>
<th>Inv #</th>
<th>Date Type</th>
<th>ID</th>
</tr>";
while($record = mysql_fetch_array($myData)){
echo "<form action=edit.php method=post>";
echo "<tr>";
echo "<td>" . "<input type=text name=inv_number value=" . $record['inv_number'] . " </td>";
echo "<td>" . "<input type=text name=date_type value=" . $record['date_type'] . " </td>";
echo "<td>" . "<input type=text name=id value=" . $record['id'] . " </td>";
echo "<td>" . "<input type=hidden name=hidden value=" . $record['id'] . " </td>";
echo "<td>" . "<input type=submit name=update value=update" . " </td>";
echo "</tr>";
echo "</form>";
}

echo "</table>";
mysql_close($con);

?>
这是我在search.php页面上显示记录的按钮

<a href='edit.php?edit=$row[id]'>edit</a>

在进入edit.php页面时,当我单击特定记录的编辑按钮时,它会显示表中的所有记录,这并不理想,因为我更希望只看到要编辑/更新的记录。这两个问题是我一直无法解决的问题。感谢您的帮助。提前通知大家。

您的MySQL列名真的是Inv吗?如果是这样,您需要像这样添加反勾号:

`Inv #`

但是看看你的表单,它看起来像字段名是inv_number。另外,您看到的是所有记录,因为select子句没有where修饰符

你的MySQL列名真的是Inv吗?如果是这样,您需要像这样添加反勾号:

`Inv #`
但是看看你的表单,它看起来像字段名是inv_number。另外,您看到的是所有记录,因为select子句没有where修饰符

更换您的线路:

$sql = "SELECT * FROM invoice";
用这条线

    $where = '';
    if(!empty($_GET) && !empty($_GET['edit'])) {
        $where = ' where id='.$_GET['edit'];
    }
    $sql = "SELECT * FROM invoice".$where;
替换您的线路:

$sql = "SELECT * FROM invoice";
用这条线

    $where = '';
    if(!empty($_GET) && !empty($_GET['edit'])) {
        $where = ' where id='.$_GET['edit'];
    }
    $sql = "SELECT * FROM invoice".$where;

SELECT语句没有WHERE子句,因此它正在从发票表中提取所有行。php代码的while循环尽职尽责地呈现它们。请尝试添加WHERE子句,并让我们知道发生了什么。好吧,由于SQL注入漏洞非常明显,我怀疑您将不得不为数据库中有这么多记录而担心太久。你可能想开始在这里阅读:StimoTo:考虑引用这一点-你也应该做,作为一个破碎的例子。加上name='inv\u number'等。这些引号可能很重要。打开后立即将错误报告添加到文件顶部,因为SELECT语句没有WHERE子句,因此它会从发票表中提取所有行。php代码的while循环尽职尽责地呈现它们。请尝试添加WHERE子句,并让我们知道发生了什么。好吧,由于SQL注入漏洞非常明显,我怀疑您将不得不为数据库中有这么多记录而担心太久。你可能想开始在这里阅读:StimoTo:考虑引用这一点-你也应该做,作为一个破碎的例子。加上name='inv\u number'等。这些引号可能很重要。在打开文件后立即将错误报告添加到文件顶部,您缺少一个>是的,是的,在我将名称inv和日期类型和ID更改为inv\u number日期类型和ID后,它终于起作用了。我还包括了背勾。伟大的但我仍然在选择一条记录进行编辑时遇到困难,甚至在用这个WHERE语句单击之后$sql=从发票中选择*,其中id='$id';是的,是的,在我将名称Inv和Date Type和ID更改为Inv_number Date_Type和ID之后,它终于起作用了。我还包括了背勾。伟大的但我仍然在选择一条记录进行编辑时遇到困难,甚至在用这个WHERE语句单击之后$sql=从发票中选择*,其中id='$id';它工作得很好,一个小细节但是,在点击更新后,它在表中添加了第二条记录进行编辑,我们可以防止这种情况发生吗?实际上它添加了数据库中所有的现有记录,我认为只有一条,因为我的数据库中只有2条测试记录。你能告诉我,表的结构是什么吗?它工作得很好,然而,一个小细节是,单击“更新”后,它在表中添加了第二条记录以进行编辑,我们可以防止这种情况发生吗?实际上,它添加了数据库中的所有现有记录,我认为只有一条,因为我的数据库中只有2条测试记录。您能告诉我表的结构是什么吗?