0

我正在尝试更新 sql 表中的记录。我按照教程完成了所有应有的操作,但是当我检查记录是否已更新时,我认为这不是这行代码的问题,即整个更新页面。

<td>
<input name="first" type="text" id="first" value="<? echo $rows['first']; ?>" size="22">
</td>

根据要求提供更多数据:

    $sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>

<table>
<tr>
<form name="form1" method="post" action="update_ac.php">
<tr>
<td>&nbsp;</td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td><strong>First Name</strong></td>
<td><strong>Lastname</strong></td>
<td><strong>Address</strong></td>
<td><strong>Email</strong></td>
<td><strong>Username</strong></td>
<td><strong>Password</strong></td>
</tr>
<tr>

<td>
<input name="first" type="text" id="first" value="<? echo $rows['first']; ?>" size="22">
</td>
<td>
<input name="last" type="text" id="last" value="<? echo $rows['last']; ?>" size="30">
</td>
<td>
<input name="address" type="text" id="address" value="<? echo $rows['address']; ?>" size="40">
</td>
<td>
<input name="email" type="text" id="email" value="<? echo $rows['email']; ?>" size="30">
</td>
<td>
<input name="myusername" type="text" id="myusername" value="<? echo $rows['myusername']; ?>" size="30">
</td>
<td>
<input name="mypassword" type="text" id="mypassword" value="<? echo $rows['mypassword']; ?>" size="20">
</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">

发生的情况是结果在表格中返回,您单击以编辑条目并进入此页面,其中字段预先填充了您应该进行编辑和更新的数据

当我更新该字段时,它似乎没有进行更改

任何帮助表示赞赏,如果我没有正确解释,对不起各位

更新代码

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database 
$sql="UPDATE $tbl_name SET last='$last', first='$first', address='$address', email='$email', myusername='$myusername', mypassword='$mypassword' WHERE id='$id'";
$result=mysql_query($sql);

// if successfully updated. 
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='list_records.php'>View result</a>";
}

else {
echo "ERROR";
}

?>
4

1 回答 1

0

您正在查询:

$sql="UPDATE $tbl_name SET last='$last', first='$first', address='$address', email='$email', myusername='$myusername', mypassword='$mypassword' WHERE id='$id'";

在该代码的执行范围内,您传递的变量不存在。我猜你想把它们从 $_POST 数组中拉出来。

我应该顺便提一下,这是一个非常糟糕的主意(http://en.wikipedia.org/wiki/SQL_injection)。考虑改用 PDO 和准备好的语句。

$db = new PDO("mssql:host=$host;dbname=$tbl_name, $user, $pass");
$stmt = $db->prepare("UPDATE $tbl_name SET last=:last, first=:first, address=:address, email=:email, myusername=:myusername, mypassword=:mypassword WHERE id=:id");
$stmt->bindParam(":last", $last);
$stmt->bindParam(":first", $first);

依此类推……直到

$stmt->execute();

在此处阅读有关 PDO 的更多信息:http: //php.net/manual/en/book.pdo.php

或这里的教程:http ://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html

于 2013-04-11T20:36:32.607 回答