簡體   English   中英

PHP表單未更新mysql數據庫

[英]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。

  • 首先,請確保您的查詢確實有效,或者在phpmyadmin或您使用的任何數據庫管理器上測試查詢。
  • 其次,不要在查詢中直接使用$_GET['id'] 您可以為此使用准備好的語句,該語句可用於mysqli和PDO。 請勿在折舊過程中使用mysql API其http://www.php.net/manual/zh/intro.mysql.php
  • 第三,閱讀phptherightway以確保您處在正確的學習道路上。
<?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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM