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 に答える