我已经在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功能是一个问题
答案 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
:
<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是主键,并且没有理由检查多行。