使用表单数据进行sql更新的问题

时间:2013-04-11 19:52:54

标签: php mysql mysqli sql-update

我正在尝试更新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";
}

?>

1 个答案:

答案 0 :(得分: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