php - 无法编辑数据库中的数据并且无法获取带有 ID 的名称?

标签 php mysql

我正在尝试将数据编辑到数据库中,但我不知道为什么不能这样做。到目前为止,我已经尝试过一些东西。也许有人可以看看。我正在尝试构建一个更新,在那里我可以更改名字、姓氏等等,但我什至不能先配置一个名字..

主页文件 管理系统

<body>

  <h1>TU Chemnitz Student managament system</h1>

  <br>
  <a href="insert_form.html" class="myButton">ADD Person</a>
  <a href="insert_form.html" class="myButton">Edit Person</a>
  <a href="insert_form.html" class="myButton">Manage Boards</a>
  <a href="insert_form.html" class="myButton">Manage Departments</a>
  <a href="search_personel.html" class="myButton">Search N&S</a>
  <a href="three_search.html" class="myButton">Triple Search</a>
  <a href="mtable.php" class="myButton">Membership</a>

  <br>
  <br>

<?php 

include_once('coneksioni.php');


// create query 
$querys = "SELECT * FROM tblperson"; 

// execute query 
$result = mysql_query($querys) or die ("Error in query: $query. ".mysql_error()); 

    $res = mysql_query("SELECT * FROM tblperson");

echo "<table border=1 align=center>
<tr>
<th>Personal ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Deparment</th>
<th>Board</th>
<th>Marticulation Number</th>
<th>Reg Date</th>
<th>Action</th>

</tr>";
while($row = mysql_fetch_array($res)) {
    ?>
    <tr>
        <td><?=$row['personid']?></td>
        <td><?=$row['personname']?></td>
        <td><?=$row['personsurname']?></td>
        <td><?=$row['persondepartment']?></td>
        <td><?=$row['personboard']?></td>
        <td><?=$row['martinumber']?></td>
        <td><?=$row['personregdate']?></td>
        <td>
            <a href="edit20.php?edit<?=$row['personid']?>">edit</a> |
            <a href="edit.php?id=$row[id]">del</a>

        </td>
    </tr>

<?php   
    }

?>
</body>
</html>

和edit20.php

<?php
    include_once('coneksioni.php');

    if( isset($_GET['edit']) )
    {
        $personid = $_GET['edit'];
        $res= mysql_query("SELECT * FROM tblperson WHERE personid='$personid'");
        $row= mysql_fetch_array($res);
    }

    if( isset($_POST['personname']) )
    {
        $personname = $_POST['personname'];
        $personid    = $_POST['personid'];
        $sql     = "UPDATE tblperson SET personname='$personname' WHERE personid='$personid'";
        $res     = mysql_query($sql) 
                                    or die("Could not update".mysql_error());
        echo "<meta http-equiv='refresh' content='0;url=home.php'>";
    }

?>
<form action="edit20.php" method="POST">
Name: <input type="text" name="personname" value="<?php echo $row[1]; ?>"><br />
<input type="hidden" name="personid" value="<?php echo $row[0]; ?>">
<input type="submit" value=" Update "/>
</form>

并且在我的表中的数据库主键是 personid 名称字段 personname(不是主键)。

最佳答案

请使用 Prepared Statement 以降低 SQL 注入(inject)的风险

检查 coneksioni.php

$conn = new mysqli(HOST, USER, PASS, DBNAME);

edit.php

require_once ('coneksioni.php');

$edit_person = $conn->prepare(" 
    UPDATE tblperson SET 
    personname = ? WHERE personid = ? 
");

$edit_person->bind_param( 
    "si", 
    $personname, $personid
);

if(isset($_POST['personname']) && isset($_POST['personid']) ) {
    $personname = $_POST['personname'];
    $personid = $_POST['personid'];


    if (!$edit_person->execute()) {
        // action if failed
    } else {
        // action if success
    }

    $edit_person->close();

}

form.html

<form action="edit.php" method="POST">
Name: <input type="text" name="personname" value="<?php echo $row[1]; ?>"><br />
<input type="hidden" name="personid" value="<?php echo $row[0]; ?>">
<input type="submit" value=" Update "/>
</form>

干杯

关于php - 无法编辑数据库中的数据并且无法获取带有 ID 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557847/

相关文章:

php - 这段代码需要循环超过 350 万行,我怎样才能让它更有效率?

php - 使用 StdClass 对象为多维数组创建 foreach 循环时遇到问题

mysql - 为过程传入表

javascript - 将字符串数组的字符串解析回数组

PHP 函数不显示 HTML 数据

php - 在wordpress的cherry框架中自动更改css

php - 当鼠标悬停在图像上时如何在图像上显示缩放按钮

PHP 对 ajax 的响应

php - 代码点火器 : what is the best practice for caching?

mysql - 消除创建临时表的额外步骤