编辑记录(应该很容易)

时间:2012-02-12 19:18:21

标签: php edit

我已经在Stackoverflow中找到了所有地方,我已经在Google上搜索了16.493个网站,但没有回答php中最基本的内容(编辑记录)

我设法编写了最复杂的东西 - 但这就像癌症一样,也会帮助别人。

我需要文件 - edit.php - 和update.php

edit.php有效,它从记录中检索数据

这是edit.php

<?php
mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

$UID = (int)$_GET['id'];
$query = mysql_query("SELECT * FROM cloudbig WHERE id = '$UID'") or die(mysql_error());

if(mysql_num_rows($query)>=1){
    while($row = mysql_fetch_array($query)) {
        $fs = $row['fs'];
        $texti = $row['texti'];
    }
?>

<form name="form1" method="post" action="update.php">

<input type="text" name="fs" value="<?php echo $texti ?>" size="60">
<textarea rows="8" name="texti"  id="userName" cols="60"><?php echo $texti ?></textarea>
<input type="submit" name="save" value="submit" />
</form>

<?php
}
?>

,这里是update.php

<?php
$id = $_REQUEST["id"];
$fs = $_POST["fs"];
$texti = $_POST["texti"];

mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
echo "MySQL Connection Established! <br>";

mysql_select_db("db") or die(mysql_error());
echo "Database Found! <br>";

$query = "UPDATE cloudbig SET fs = '$fs', texti = '$texti' WHERE id = '$id'";

$res = mysql_query($query);

if ($res)
  echo "<p>Record Updated<p>";
else
  echo "Problem updating record. MySQL Error: " . mysql_error();
?>

我在php中做了一个完整的新闻/在线杂志网站,但是简单的edit.php功能是一个问题

1 个答案:

答案 0 :(得分:0)

我认为简短的回答是你永远不会将“id”发布到update.php脚本。您的表单需要如下所示:

<form name="form1" method="post" action="update.php">
   <input type="hidden" name="id" value="<?php echo $UID  ?>">
   <input type="text" name="fs" value="<?php echo $fs; ?>" size="60">
  <textarea rows="8" name="texti"  id="userName" cols="60"><?php echo $texti ?></textarea>
   <input type="submit" name="save" value="submit" />
</form>

id发送到POST数组中,$id = $_REQUEST["id"];

可以访问它

您也可以通过修改表格action

通过_GET发送来完成此操作
<form name="form1" method="post" action="update.php?id=<?php echo $UID  ?>">
   <input type="text" name="fs" value="<?php echo $fs; ?>" size="60">
   <textarea rows="8" name="texti"  id="userName" cols="60"><?php echo $texti ?></textarea>
    <input type="submit" name="save" value="submit" />
 </form>

将把它放在$ _GET数组中,它也可以在$ _REQUEST数组中看到。

最后,您的代码中存在一些主要问题:

  • 首先,它受SQL注入!你必须逃脱 将变量传递给MySQL查询之前的变量。

  • 二。正如iDifferent指出的那样,你似乎已经将错误的值回显到fs字段中(你将它设置为等同于texti字段)

  • 第三,为什么你有这个循环?

    如果(mysql_num_rows($查询)&GT; = 1){     while($ row = mysql_fetch_array($ query)){         $ fs = $ row ['fs'];         $ texti = $ row ['texti'];     }

如果您按ID提取,则不应该有重复项。确保ID是主键,并且没有理由检查多行。