【问题标题】:Updating a MySQLi database using php and HTML5 forms使用 php 和 HTML5 表单更新 MySQLi 数据库
【发布时间】:2016-10-12 04:06:11
【问题描述】:

在我的网站上,我有一个管理页面,我希望能够使用表单更新数据库中的信息。

这是我用来输入信息和更新数据库中的内容的代码:

adminform.php

<html>
<head>
    <link rel="stylesheet" href="assets/css/main.css" />
</head>
<body>

<header id="header">
                <h1><a href="home.php">SafeTNet</a></h1>
                <nav id="nav">
                    <ul>

                        <li>Admin Page Only</li>
                        <li></li>


                        <li><a href="logout.php" class="button">Logout</a>    </li>

                    </ul>
                </nav>
            </header>

 <h1> Select a member </h1>
 <br />
 <select name="members" onchange="showUser(this.value)">
 <option value="">Select a member email</option>
 <?php
    $query = "SELECT * FROM members";
    $mysqli = new mysqli('localhost','root','root','SafeTNetD');
    $result = $mysqli->query($query);
    while($row = $result->fetch_assoc())
    echo '<option value="'.$row["email"].'">'.$row["email"].'</option>';
 ?>
 </select>
    <div id="signup">
       <h2>Update Your Member Information</h2>
        <form method="post" action="admin1.php">
           <table>
         <tr>
            <td>Email</td>
            <td><input type="text" name="email" required="required"></td>
        </tr>
        <tr>
        </tr>
         <tr> 
            <td>City </td>
            <td><input type="text" name="city"></td>
        </tr>
        <tr>
        </tr>
        <tr>
        </table>
        <br><br>
        <div id="buttons">
            <input type="submit">
        </div>


    </body>
    </html>

admin1.php

<html>
<head>
<title>Admin</title>
<link rel="stylesheet" href="assets/css/main.css" />
 </head>  
 <body>


<header id="header">
                <h1><a href="home.php">SafeTNet</a></h1>
                <nav id="nav">
                    <ul>

                        <li>Admin Page Only</li>
                        <li></li>


                        <li><a href="logout.php" class="button">Logout</a></li>

                    </ul>
                </nav>
            </header>
    <br />

 <?php
 $query = "SELECT * FROM members";
 $mysqli = new mysqli('localhost','root','root','SafeTNetD');
 $result = $mysqli->query($query);
 while($row = $result->fetch_assoc())
 echo '<option value="'.$row["email"].'">'.$row["email"].'</option>';
 ?>
</select>
<br />
<?php
$q=$row["email"];
 $mysqli = new mysqli('localhost','root','root','members');
$sql = "SELECT * FROM members WHERE email='".$q."'";
if(array_key_exists('_submit_check', $_POST))
{
   $email = $_POST['email'];
   $city = $_POST['city'];

$sql = "UPDATE members SET city = '$city' WHERE email = '$q'";
if($mysqli->query($sql) === TRUE)
{
    echo 'Record updated successfully<br />';
}
    else
{
    echo $sql.'<br />' . $mysqli->error;
}
$mysqli->close();
}
?>

<br><br><br>

<footer id="footer">
                <img src="logo.jpg" height="50px">

                <ul class="copyright">
                    <li>&copy; SafeTNet. All rights reserved.</li><li> 2016</li>
                </ul>
            </footer>
</body>
</html>

我可以让表单运行,但无法让信息在数据库中更改或回显到屏幕。

提前谢谢你。

【问题讨论】:

    标签: php mysql html mysqli sql-update


    【解决方案1】:
    if(array_key_exists('_submit_check', $_POST))
    {
       $email = $_POST['email'];
       $city = $_POST['city'];
    
    $sql = "UPDATE members SET city = '$city' WHERE email = '$q'";
    if($mysqli->query($sql) === TRUE)
    {
        echo 'Record updated successfully<br />';
    }
        else
    {
        echo $sql.'<br />' . $mysqli->error;
    }
    $mysqli->close();
    }
    

    您的表单中没有名为“_submit_check”的元素。我猜你忘记了提交按钮的名称属性。

    您的脚本很容易受到 SQL 注入的攻击。你真的不应该简单地将用户输入扔到你的查询中。您可以使用mysqli_real_escape_string()Prepared Statements 来保护您的应用程序。

    为了提高代码的可读性,您可以稍微改变结构。在您的 admin1.php 中,您应该在输出任何 html 之前执行业务逻辑。因此,您将首先检查表单是否已发送,然后进行数据库操作。检查结果或数据库操作的成功/错误消息可以写入变量,直到您输出站点的内容。

    这样每个开始阅读代码的人都会立即知道“好吧,这个脚本是某种形式的目标,并访问数据库进行一些写操作”。

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多