Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择然后插入PHP查询_Php_Mysql - Fatal编程技术网

选择然后插入PHP查询

选择然后插入PHP查询,php,mysql,Php,Mysql,如果用户存在,我可以先检查数据库,如果不存在,则使用insert语句。代码当前仅执行select语句 <?php include_once('includes/dbconn.php'); if (isset($_POST['submitted'])) { $fname = $_POST['fname']; $lname = $_POST['lname']; $user = $_POST['user']; $p

如果用户存在,我可以先检查数据库,如果不存在,则使用insert语句。代码当前仅执行select语句

<?php
    include_once('includes/dbconn.php');

    if (isset($_POST['submitted'])) {
        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $user = $_POST['user'];
        $pass = $_POST['pass'];

        $query_check_user = "SELECT username FROM Users WHERE username = '$user'";
        $query = "INSERT INTO Users(firstname, lastname, username, password) VALUES ('$fname','$lname','$user','$pass')";

        if (mysqli_query($dbconn, $query_check_user)) {
            echo "user already exists";
            mysqli_close($dbconn);
        }else{
            mysqli_query($dbconn, $query);
        }
    }
?>

我从您的问题中了解到,如果用户不存在,您希望插入该用户,对吗

$query_check_user = "SELECT username FROM Users WHERE username = '$user'";
$b = mysqli_query($dbconn,$query_check_user);
$a = mysqli_num_rows($b);
if($a<0):
   mysqli_query(dbconn, "INSERT INTO Users(firstname, lastname, username, password) VALUES ('$fname','$lname','$user','$pass')");
endif;
$query\u check\u user=“从用户名=“$user”的用户中选择用户名;
$b=mysqli\u query($dbconn,$query\u check\u user);
$a=mysqli\u num\u行($b);

如果($a您可以使用
mysqli_num_rows();
检查数字如果结果大于0则用户存在,否则插入用户数据

我的例子是:

include_once('includes/dbconn.php');

    if (isset($_POST['submitted'])) {
        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $user = $_POST['user'];
        $pass = $_POST['pass'];

        $query_check_user = "SELECT username FROM Users WHERE username = '$user'";
        $query_result = mysqli_query($query_check_user);
        $query = "INSERT INTO Users(firstname, lastname, username, password) VALUES ('$fname','$lname','$user','$pass')";

        if (mysqli_num_rows($query_result) > 0) {
            echo "user already exists";
            mysqli_close($dbconn);
        }else{
            mysqli_query($dbconn, $query);
        }
    }

mysqli\u查询可能重复
仅在失败时返回
false
,这不仅仅是因为它返回一个空集。还请查找准备好的语句(您的查询容易出现SQL注入)。执行检查是否存在带有
SELECT
的记录是不好的,因为这是不准确的信息。当您完成检查时,另一个进程可以插入该记录,并且您可以得到两条相同的记录。为了解决此问题,我们使用
unique
约束,我们只需插入和如果数据库报告
dup复杂的键错误
那么我们就知道有一条记录存在。@Flooke这不是“它发生了吗?”,这是创建一个没有像这样漏洞的系统的情况。它可能不会在今天,明天,在6个月内发生。如果它在2年内发生呢?然而,有趣的是,创建一个独特的约束使我们更容易,因为我们必须键入方式,方式更少的代码。而且它永远是防弹的。关于软删除,你可以始终从
(用户名已删除)
或哈希
(用户名已删除)创建唯一约束
并将其另存为唯一约束。您的答案容易受到sql注入攻击。请教授适当的技术。如果用户已经存在,您正在尝试插入新用户-可能是错误的,编辑没有帮助-行数不会<0您的答案容易受到sql注入攻击。请教授适当的技术。如果($data['total']>0){echo“用户已存在;mysqli_close($dbconn);}否则{mysqli_query($dbconn,$query);}}}}不起作用,这是输出0。即使用户名存在,也会添加用户在phpmyadmin上检查您的查询或显示您的表username的数据库结构
include_once('includes/dbconn.php');

    if (isset($_POST['submitted'])) {
        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $user = $_POST['user'];
        $pass = $_POST['pass'];

        $query_check_user = "SELECT username FROM Users WHERE username = '$user'";
        $query_result = mysqli_query($query_check_user);
        $query = "INSERT INTO Users(firstname, lastname, username, password) VALUES ('$fname','$lname','$user','$pass')";

        if (mysqli_num_rows($query_result) > 0) {
            echo "user already exists";
            mysqli_close($dbconn);
        }else{
            mysqli_query($dbconn, $query);
        }
    }