PHP inserting data to mySQL two times instead of one

点点圈 提交于 2020-01-17 06:23:45

问题


<?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";
 ?>

Hello i have this simple .php file to insert data into mySQL database,but instead of once it does it two times with one request.How can i stop this?I am using wamp server x64,chrome,php 5.5.12; P.S read.php displays the data table


回答1:


change this code

    $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";

to

$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";

Because if you run this line $conn->query($sqlin); twice it will run your query twice and insert record in database two time




回答2:


Because you are execution your query times

$result=$conn->query($sqlin);// first time
if ($conn->query($sqlin) === TRUE) {// second time

Just execute it only one 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;
 }

Don't insert value directly better use bind statement

http://php.net/manual/en/mysqli-stmt.bind-param.php

Don't store plain password into database read password hashing

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/faq.passwords.php




回答3:


Do not take result variable directly do as follows :

if ($conn->query($sqlin) === TRUE) {
echo "New record created successfully";
} else {
 echo "Error: " . $sqlin . "<br>" . $conn->error;
 }



回答4:


just use the variable in your if condition

if($sqlin === TRUE)



回答5:


$conn->query($sqlin) === TRUE causes an dual entry use $result === TRUE instead.




回答6:


yes, it's a great issue. you have to check view file. That's means, focus on your file where you called class. You called 2 times. If you are not using any success message. It should to ok, but if you use it, so please remove another call. Suppose -

Example:

$_SESSION ['success'] = "Data save successfully";

or

$success_msg = "Data save successfully"; 

(from main public function)

you have to call on view file -

$save_blog_info = new Blog();
$success_msg = $save_blog_info->save_blog_info($_POST);

don't use -

$save_blog_info = new Blog();
$save_blog_info->save_blog_info($_POST);
$success_msg = $save_blog_info->save_blog_info($_POST);

thanks



来源:https://stackoverflow.com/questions/34672630/php-inserting-data-to-mysql-two-times-instead-of-one

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!