选择然后插入PHP查询
如果用户存在,我可以先检查数据库,如果不存在,则使用insert语句。代码当前仅执行select语句选择然后插入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
<?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);
}
}