这是使用PDO的连接
<?php
session_start();
include 'db_config.php';
try {
$conn = new PDO("mysql:host=localhost;dbname=$database","root","");
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO users (name, username,
password)
VALUES (:name, :username, :password)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
// insert a row
$name = $_POST["name"];
$username = $_POST["username"];
$password = $_POST["password"];
$stmt->execute();
$query="select * from users";
$d = $conn->query($query);
}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
这是用户登记表
<form method="post">
<div class="modal-body">
<div class="form-group">
<input type="text" name="username" placeholder="Enter Username" class="form-control">
<br>
<br>
<input type="text" name="name" placeholder="Enter Name" class="form-control">
<br>
<br>
<input type="password" name="password" placeholder="Enter Password" class="form-control">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary" name="save_user">Save changes</button>
</div>
</form>
这是桌子
<tbody>
<?php foreach ($d as $data)
{
?>
<tr>
<td><?php echo $data['users_id']?></td>
<td><?php echo $data['username']?></td>
<td><?php echo $data['name']?></td>
</tbody>
</tr>
<?php
}
?>
此映像是用户注册表单
在chrome中点击“重新加载按钮”后的这张图片
大家好,如何修复这种错误。 如果管理员想要注册另一个用户,那么管理员将点击用户注册表单的按钮,一旦管理员点击按钮,管理员需要填写表单,然后管理员完成表单,然后点击保存按钮,将数据保存在“图像”2“中。想象一下,当用户点击chrome中的重新加载页面时,以前的数据复制到”图像3“中。如何防止这种情况呢?对不起,我是PHP初学者:)
在您的位置,我不会像这样将所有pdo查询放在一堆中,因为它将在每次您加载页面时运行。 向它们添加触发器,因为很明显,您希望这些查询仅在单击“保存”按钮时运行。
相反,可以将查询分开,这样做。 我可以看到您已经加载了db_config.php文件,那么为什么要再次配置db呢? 请随意使用下面的例子。
db_config.php
$host = 'localhost';
$db = '';
$user = 'root';
$pass = '';
$charset = 'utf8';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$conn = new \PDO($dsn, $user, $pass, $opt);
现在,每次您加载这个文件时,您都有一个到数据库的连接。 所以你可以做这样的事。
<?php
session_start();
include 'db_config.php';
if (isset($_POST['save_user'])) {
$name = $_POST["name"];
$username = $_POST["username"];
$password = $_POST["password"];
//Your sql query
$sql = "INSERT INTO users (name, username, password) VALUES (:name, :username, :password)";
// prepare sql and bind parameters
$stmt = $conn->prepare($sql);
//Set your parameters
$params = ['name' => $name, 'username' => $username, 'password' => $password];
// insert a row
$stmt->execute($params);
}
function loadUsers()
{
$query = "SELECT * FROM users";
$d = $conn->query($query);
}
loadUsers();