【问题标题】:Display value from database in a form value fields在表单值字段中显示来自数据库的值
【发布时间】:2014-05-27 09:13:19
【问题描述】:

我一直在尝试将数据库中的数据显示为表单字段中的值。但是系统一直说“while($row = mysql_fetch_array($result))”有一个错误。所以我在这里有点困惑。我该如何解决这个错误。下面是我的代码。

<?php
if (isset($_GET['serialno'])){

    echo '<form action="update.php" method="post">';
    echo '<br>';
    echo '<input type="hidden" name="serialno" value="'. $_GET['serialno'] .'">';

    $con = mysql_connect("localhost","root","");
    if (!$con){
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("sys", $con);

    $id=$_GET['serialno'];
    $result = mysql_query("SELECT * FROM main WHERE serialno = $id");

    while($row = mysql_fetch_array($result)){
        echo'Date: '.'<input type="text" name="date" value="'. $row['date'] .'">'; 
        echo '<br>';
        echo'Work Description: '.'<input type="text" name="desc" value="'. $row['desc'].'">';
        echo '<br>';
        echo'Company Name: '.'<input type="text" name="comp" value="'. $row['comp'] .'">'; 
        echo '<br>';

        echo '<input name="save" type="submit" value="Save" />';
    }

    echo '</form>';
}
?>

谁能帮帮我..真的很感激。

【问题讨论】:

  • echo mysql_error(); before while 会告诉您查询是否失败。
  • 你应该使用mysqli_,mysql_已弃用
  • 您的代码容易受到 SQL 注入的攻击。你应该阅读how to prevent them in PHP
  • 谢谢大家..谢谢你的链接..它帮助我改进了我的代码:)

标签: php sql forms


【解决方案1】:

您忘记了查询中 $id 周围的单引号,如果添加它们,它将起作用。

$result = mysql_query("SELECT * FROM main WHERE serialno = '$id'");

mysql_query()后面加上or die(mysql_error())很聪明,这样你就可以看到错误在哪里了。

另外,如果有人将' OR 1='1 输入为serialno,您的脚本将选择数据库中的所有行,然后将它们全部显示出来。您可以通过将$id= $_GET['serialno']; 更改为$id=mysql_real_escape_string($_GET['serialno']); 来防止这种情况发生

【讨论】:

  • 谢谢 .. 我怎么会忘记这个简单的事情 .. 难怪它不起作用 .. 非常感谢 .. 它终于起作用了 .. 我还添加了 echo mysql_error()
  • 不客气,我有时也会这样:)
猜你喜欢
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
相关资源
最近更新 更多