0

私は実質的にプログラミングの経験がなく、この最初のプロジェクトを試しています。データベースを更新する方法に少し固執しているので、編集をクリックすると、正しいレコードが編集画面に読み込まれますupdate.php

[更新]をクリックすると、updated.phpからデータベースが更新されたというメッセージが表示されますが、データベースは更新されません。レコードを表示すると、更新前と同じです。よろしくお願いします。 。

次のコード:

update.php
$objConnect = mysql_connect("localhost","username","password") or die(mysql_error());
$objDB = mysql_select_db("teldirdb");
$id = $_GET['id'];
$strSQL = "SELECT * FROM teldir where id = '$id' ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$objResult = mysql_fetch_array($objQuery)
?>

<form id="FormName" action="updated.php" method="post" name="FormName">
<table width="448" border="0" cellspacing="2" cellpadding="0">

<tr>
<td width="150" align="right"><label for="fname">fname</label></td>
<td><input name="fname" maxlength="30" type="text" value="<?=$objResult["fname"];?>">    </td>
</tr>

<tr>
<td width="150" align="right"><label for="lname">lname</label></td>
<td><input name="lname" maxlength="30" type="text" value="   <?=$objResult["lname"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="tel">tel</label></td>
<td><input name="tel" maxlength="15" type="text" value="<?=$objResult["tel"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="adress1">adress1</label></td>
<td><input name="adress1" maxlength="30" type="text" value="<?=$objResult["adress1"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="adress2">adress2</label></td>
<td><input name="adress2" maxlength="30" type="text" value="<?=$objResult["adress2"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="pcode">pcode</label></td>
<td><input name="pcode" maxlength="8" type="text" value="<?=$objResult["pcode"];?>">  </td>
</tr>

<tr>
<td width="150" align="right"><label for="email">email</label></td>
<td><input name="email" maxlength="30" type="text" value="<?=$objResult["email"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="lastcontactdate">lastcontactdate</label></td>
<td><input name="lastcontactdate" maxlength="30" type="text" value="<?=$objResult["lastcontactdate"];?>"></td>
</tr>

<tr>
<td colspan="2" align="center"><input name="" type="submit" value="Update"></td>
</tr>

</table>
</form>

updated.php
<?php
header('Refresh: 5; URL=view11.php');
$objConnect = mysql_connect("localhost","root","2fudge") or die(mysql_error());
$objDB = mysql_select_db("teldirdb");

$id = $_REQUEST['id'];
$fname = trim(mysql_real_escape_string($_POST["fname"]));
$lname = trim(mysql_real_escape_string($_POST["lname"]));
$tel = trim(mysql_real_escape_string($_POST["tel"]));
$adress1 = trim(mysql_real_escape_string($_POST["adress1"]));
$adress2 = trim(mysql_real_escape_string($_POST["adress2"]));
$pcode = trim(mysql_real_escape_string($_POST["pcode"]));
$email = trim(mysql_real_escape_string($_POST["email"]));
$lastcontactdate = trim(mysql_real_escape_string($_POST["lastcontactdate"]));

$rsUpdate = mysql_query("UPDATE teldir
SET  fname = '$fname',  lname = '$lname',  tel = '$tel',  adress1 = '$adress1',  adress2 = '$adress2',  pcode = '$pcode',  email = '$email',  lastcontactdate = '$lastcontactdate'
WHERE id = '$id' ");

if($rsUpdate) { echo "Successfully updated"; } else { die('Invalid query: '.mysql_error()); }
4

5 に答える 5

0
  • まず、クエリが実際に機能していることを確認します。phpmyadminまたは使用しているデータベースマネージャーでクエリをテストします。
  • $_GET['id']次に、クエリで直接使用しないでください。mysqliおよびPDOで使用可能なプリペアドステートメントを使用できます。すでに減価償却の過程にあるmysqlAPIを使用しないでくださいhttp://www.php.net/manual/en/intro.mysql.php
  • 第三に、phptherightwayを読んで、正しい学習の道を進んでいることを確認します。
于 2012-08-02T09:47:54.750 に答える
0

あなたのフォームは id パラメータを送信しません。フォームに次の行を追加してみてください。

<input type="hidden" name="id" value="<?= $id ?>" />

または、変更する

<form id="FormName" action="updated.php" ...

<form id="FormName" action="updated.php?id=<?= $id ?>" ...

今のところ、クエリは次のように評価されます

(...) WHERE id=''

これは有効な SQL クエリです (したがってエラーは発生しません) が、何も達成しません (より具体的には、ID が設定されていない行のデータを変更します)

于 2012-08-02T09:32:49.117 に答える
0

あなたの問題は、idフォームにフィールドがないため、クエリ$_REQUEST['id']updated.phpつながるフィールドがないことです

UPDATE teldir ... WHERE id = ''

ID を含む非表示フィールドをフォームに追加します。

<input name="id" type="hidden" value="<?=$objResult["id"];?>

そして、ハッキングされるのを待ちます... ;-)

真剣に、クエンティンのコメントをチェックしてください。

于 2012-08-02T09:34:11.710 に答える
0
<?php
$objConnect = mysql_connect("localhost","username","password") or die(mysql_error());
$objDB = mysql_select_db("teldirdb");
$id = $_GET['id'];
$strSQL = "SELECT * FROM teldir where id = ".$id." ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<form id="FormName" action="updated.php" method="post" name="FormName">
<table width="448" border="0" cellspacing="2" cellpadding="0">

<?php
while($objResult = mysql_fetch_array($objQuery)) {
?>
<tr><td><input type="hidden" name="id" value="<?=$objResult['id'];?>"></td></tr>
<tr>
<td width="150" align="right"><label for="fname">fname</label></td>
<td><input name="fname" maxlength="30" type="text" value="<?=$objResult["fname"];?>">    </td>
</tr>

<tr>
<td width="150" align="right"><label for="lname">lname</label></td>
<td><input name="lname" maxlength="30" type="text" value="<?=$objResult["lname"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="tel">tel</label></td>
<td><input name="tel" maxlength="15" type="text" value="<?=$objResult["tel"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="adress1">adress1</label></td>
<td><input name="adress1" maxlength="30" type="text" value="<?=$objResult["adress1"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="adress2">adress2</label></td>
<td><input name="adress2" maxlength="30" type="text" value="<?=$objResult["adress2"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="pcode">pcode</label></td>
<td><input name="pcode" maxlength="8" type="text" value="<?=$objResult["pcode"];?>">  </td>
</tr>

<tr>
<td width="150" align="right"><label for="email">email</label></td>
<td><input name="email" maxlength="30" type="text" value="<?=$objResult["email"];?>"></td>
</tr>

<tr>
<td width="150" align="right"><label for="lastcontactdate">lastcontactdate</label></td>
<td><input name="lastcontactdate" maxlength="30" type="text" value="<?=$objResult["lastcontactdate"];?>"></td>
</tr>
<?php } ?>
<tr>
<td colspan="2" align="center"><input name="" type="submit" value="Update"></td>
</tr>

</table>
</form>

UPDATE.PHP

<?php
header('Refresh: 5; URL=view11.php');
$objConnect = mysql_connect("localhost","root","2fudge") or die(mysql_error());
$objDB = mysql_select_db("teldirdb");

$id = $_REQUEST['id'];
$fname = trim(mysql_real_escape_string($_POST["fname"]));
$lname = trim(mysql_real_escape_string($_POST["lname"]));
$tel = trim(mysql_real_escape_string($_POST["tel"]));
$adress1 = trim(mysql_real_escape_string($_POST["adress1"]));
$adress2 = trim(mysql_real_escape_string($_POST["adress2"]));
$pcode = trim(mysql_real_escape_string($_POST["pcode"]));
$email = trim(mysql_real_escape_string($_POST["email"]));
$lastcontactdate = trim(mysql_real_escape_string($_POST["lastcontactdate"]));

$rsUpdate = mysql_query("UPDATE teldir SET  fname = '".$fname."',  
                                            lname = '".$lname."',  
                                            tel = ".$tel.",  
                                            adress1 = '".$adress1."',  
                                            adress2 = '".$adress2."',  
                                            pcode = ".$pcode.",  
                                            email = '".$email."',  
                                            lastcontactdate = '".$lastcontactdate."' WHERE id = ".$id." ");

if($rsUpdate) { 
    echo "Successfully updated"; 
} else { 
    die('Invalid query: '.mysql_error()); 
}
于 2014-12-08T18:24:33.950 に答える
0

$id の値を取得していますか? $id には $_REQUEST['id'] を使用していますが、id 値を保存/渡しているところは見当たりませんでした。たとえば、クエリの id を保存してその値を取得する隠しフィールドを追加できます。 $_POST で。

于 2012-08-02T09:37:08.587 に答える