<?php
$servername = "localhost";
$username = "root";
$password = "pass";
$dbname = "test";
$name="admin";
$pass="passerino";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}else {
echo nl2br("Conected 'n");
}
$sqlin="INSERT INTO data_test (username, password) VALUES ('valname','valpass')";
$result=$conn->query($sqlin);
if ($conn->query($sqlin) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sqlin . "<br>" . $conn->error;
}
$conn->close();
include_once "read.php";
?>
您好,我有这个简单的.php文件将数据插入mySQL数据库,但是它不是一次,而是一次请求两次。我怎样才能阻止这种情况?我正在使用 wamp 服务器 x64,chrome,php 5.5.12;P.S读取.php显示数据表
更改此代码
$sqlin="INSERT INTO data_test (username, password) VALUES ('valname','valpass')";
$result=$conn->query($sqlin);
if ($conn->query($sqlin) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sqlin . "<br>" . $conn->error;
}
$conn->close();
include_once "read.php";
自
$sqlin="INSERT INTO data_test (username, password) VALUES ('valname','valpass')";
$result=$conn->query($sqlin);
if ($result === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sqlin . "<br>" . $conn->error;
}
$conn->close();
include_once "read.php";
因为如果您运行此行$conn->query($sqlin);
两次,它将运行两次查询并在数据库中插入记录两次
因为您正在执行查询时间
$result=$conn->query($sqlin);// first time
if ($conn->query($sqlin) === TRUE) {// second time
只需执行一次
$sqlin="INSERT INTO data_test (username, password) VALUES ('valname','valpass')";
if ($conn->query($sqlin) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sqlin . "<br>" . $conn->error;
}
不要直接插入值最好使用绑定语句
http://php.net/manual/en/mysqli-stmt.bind-param.php
不要将纯密码存储到数据库读取密码哈希中
http://php.net/manual/en/function.password-hash.php
http://php.net/manual/en/faq.passwords.php
不要直接获取结果变量,如下所示:
if ($conn->query($sqlin) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sqlin . "<br>" . $conn->error;
}
只需在
if 条件中使用变量
if($sqlin === TRUE)
$conn->query($sqlin) === TRUE
会导致双条目使用$result === TRUE
。
是的,这是一个很好的问题。 您必须检查查看文件。这意味着,专注于您调用类的文件。你打了2次电话。如果您没有使用任何成功消息。它应该没问题,但如果你使用它,所以请删除另一个电话。假设-
例:
$_SESSION ['success'] = "Data save successfully";
或
$success_msg = "Data save successfully";
(来自主要公共职能(
您必须调用查看文件 -
$save_blog_info = new Blog();
$success_msg = $save_blog_info->save_blog_info($_POST);
不要使用 -
$save_blog_info = new Blog();
$save_blog_info->save_blog_info($_POST);
$success_msg = $save_blog_info->save_blog_info($_POST);
谢谢