[英]PHP form not updating mysql database
我幾乎沒有編程經驗,並且嘗試過第一個項目,但是我對如何更新數據庫有些困惑,因此我單擊了“編輯”,正確的記錄被加載到編輯屏幕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()); }
您的表單不發送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的行中的數據)
你的問題是,有沒有現場id
在你的形式,因此沒有$_REQUEST['id']
在updated.php
,導致查詢
UPDATE teldir ... WHERE id = ''
將具有ID的隱藏字段添加到表單:
<input name="id" type="hidden" value="<?=$objResult["id"];?>
然后等待被黑... ;-)
認真地檢查Quentin的評論。
您確定您的價值是$ id嗎? 對於$ id,您使用的是$ _REQUEST ['id'],但我沒有看到您在任何地方保存/傳遞id值,例如,您可以添加一個隱藏字段來保存查詢的id,然后獲取該值與$ _POST。
$_GET['id']
。 您可以為此使用准備好的語句,該語句可用於mysqli和PDO。 請勿在折舊過程中使用mysql API其http://www.php.net/manual/zh/intro.mysql.php <?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());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.