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
<?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>

更新.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,因此没有$_REQUEST['id']in updated.php,导致查询

UPDATE teldir ... WHERE id = ''

在表单中添加一个带有 id 的隐藏字段:

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

然后等待被黑... ;-)

说真的,检查昆汀的评论。

于 2012-08-02T09:34:11.710 回答
0
  • 首先确保您的查询确实有效,或者在 phpmyadmin 或您正在使用的任何数据库管理器上测试查询。
  • 其次,不要直接$_GET['id']在查询中使用。您可以为此使用准备好的语句,这可用于 mysqli 和 PDO。不要在折旧过程中使用mysql API 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 的价值吗?对于 $id,您使用的是 $_REQUEST['id'],但我没有看到您在任何地方保存/传递 id 值,例如,您可以添加一个隐藏字段来保存查询的 id,然后获取该值与 $_POST。

于 2012-08-02T09:37:08.587 回答