0

我正在尝试制作一个允许用户编辑数据库中记录的表单。

Mymain.php是一个表格,用户可以在其中单击记录进行编辑/删除:

    echo "<td>".$row["fname"].", ".$row["first_name"]."</center></td>";
    echo "<td><center>".$row["gender"]."</center></td>";
    echo "<td><center>".$row["city"]."</center></td>";
    echo "<td><center>".$row["extra"]."</center></td>";
    echo '<td><center><a href="form.php?id='.$row["p_ID"].'"><img src="edit_icon.png"/></a><center></td>';
    echo '<td><center><a href="delete.php?id='.$row["p_ID"].'"><img src="delete.gif"/></a><center></td>';
    echo "</tr>";
    }
?>

<input type="hidden" name="p_ID" value="<?php echo $row["p_ID"]?>"></input>
<input type="hidden" name="lname" value="<?php echo $row["lname"]?>"></input>
etc..


当用户单击编辑图标时,它会重定向到我需要值 ( $row['fname']) 显示在其各自字段中的表单页面。我已经尝试过建议的解决方案,但我仍然不知道如何正确完成此操作。我不断收到错误。这是我尝试过的form.php

@$submit=$_POST['submit'];
@$lname=$_GET['lname'];
@$gender=$_GET['gender'];
@$city=$_GET['city'];
@$extra=$_GET['extra'];
?>

Last name <input type="text" name="lname" value= <?php echo $lname ?>><br><br>
Gender <input type="radio" name="gender" value="M" <?php if($gender=="M") {echo "checked";} else {echo " ";} ?>/>M&nbsp;
<input type="radio" name="gender" value="F" <?php if($gender=="F") {echo "checked";} else {echo " ";} ?>/>F<br><br>
City <select name="city">
    <option value="x">Select</option>
    <?php
    $db=mysql_connect("localhost","root") or die('Not connected : ' . mysql_error());
    mysql_select_db("my_db",$db) or die (mysql_error());
    $SQL="SELECT * FROM cities"; 
    $result=mysql_query($SQL) or die(mysql_error());
    $num_results=mysql_num_rows($result);
    mysql_close($db);
    for ($i=0;$i<$num_results;$i++)
        {
        $row=mysql_fetch_array($result);
        echo"<option value='".$row['city_id']."'", $row['city_id']==$row['city_ID']? " selected='selected'" : '',">".$row['city']."</option>";
        }
    ?>
    </select><br><br>

Extra <input type="checkbox" name="extra" value="yes" <?php if($extra=="yes") {echo "checked";} else {echo " ";} ?>/><br><br>


而且我现在并不真正关心任何 SQL 注入或任何事情,我只需要这个工作。我将不胜感激任何帮助!

错误:所有内容的未定义索引

4

2 回答 2

1

您正在关闭连接之前mysql_query用于mysql_fetch_array.

您正在尝试错误地获取行。

mysql_close除非您在查询后进行大量处理,否则不需要,因为无论如何在脚本完成运行后连接已关闭。

此外,像这样声明您的变量以删除未定义的索引错误:

$submit = isset($_POST['submit']) ? mysql_real_escape_string($_POST['submit']) : "";

注意:这也可以防止 sql 注入,但mysql_real_escape_string()只有在您连接后才能工作。

<?php

$db=mysql_connect("localhost","root") or die('Not connected : ' . mysql_error());
mysql_select_db("my_db",$db) or die (mysql_error());

$submit = isset($_POST['submit']) ? mysql_real_escape_string($_POST['submit']) : "";
//other vars here

$SQL="SELECT * FROM cities"; 
$result=mysql_query($SQL) or die(mysql_error());
while($row = mysql_fetch_array($result)){
  echo "<option value='".$row['city_id']."'>".$row['city']."</option>";
}
mysql_close(); // now you can close the connection
?>
于 2012-06-16T23:54:34.343 回答
0

您需要的是表单提交检查。以下是单页更新脚本的一般形式:

<?php
if(isset($_POST['submit'])) {
    // Form was submitted, process it and display message
    exit(); // Prevent form from being displayed again
}
?>
<!doctype html>
<html>
<body>
   <form method="POST" action="form.php">
       <!-- fields -->
       <input type="submit" name="submit" value="Submit" />
   </form>
</body>
</html>
于 2012-06-17T00:01:54.707 回答