Php 设置每个用户名可以选择微调器中的项目一次

Php 设置每个用户名可以选择微调器中的项目一次,php,mysql,Php,Mysql,我现在的情况是,每个用户名只能在spinner中选择一次项。也就是说,如果微调器有5个项目,用户可以选择所有项目,但所有项目只能选择一次。下面是我选择的php数据: <?php if($_SERVER['REQUEST_METHOD']=='POST'){ //Getting values $username = $_POST['username']; $name = $_POST['name']; //Creating an sql query $sql = "INSERT

我现在的情况是,每个用户名只能在spinner中选择一次项。也就是说,如果微调器有5个项目,用户可以选择所有项目,但所有项目只能选择一次。下面是我选择的php数据:

<?php 

if($_SERVER['REQUEST_METHOD']=='POST'){

//Getting values
$username = $_POST['username'];

$name = $_POST['name'];

//Creating an sql query

$sql = "INSERT INTO Selection (username, name) VALUES 
('$username','$name')"; 
//Importing our db connection script
 require_once('dbConnect.php');

//Executing query to database
if(mysqli_query($con,$sql)){
echo 'Select Successfully';
}else{
echo 'Sorry, You Already Select it Before';
}

//Closing the database 
mysqli_close($con);
}

为什么在插入之前不测试该条目是否已在数据库中?可能这(未经测试)代码可能有帮助:

if($_SERVER['REQUEST_METHOD']=='POST')
{
    //Getting values
    $username = $_POST['username'];
    $name = $_POST['name'];

    //Importing our db connection script
     require_once('dbConnect.php');

    //Creating an sql query
    $check_sql = "SELECT * FROM Selection WHERE username='$username' AND name='$name' LIMIT 1";
    $check_res = $mysqli->query($con,$check_sql);
    if($check_res && mysqli_num_rows($check_res) >0)
    {
        echo 'Sorry, You Already Select it Before';
    }
    else
    {
        $sql = "INSERT INTO Selection (username, name) VALUES ('$username','$name')"; 
        if(mysqli_query($con,$sql))
        {
            echo 'Select Successfully';
        }
        else
        {
            echo "Select failed for some other reason";
        }
    }

    //Closing the database 
    mysqli_close($con);
}

我认为,要检查用户是否只旋转一次,只需在数据库结构中添加一个标志,例如

 u_id | flag |
--------------
  1   | 1    
--------------
因此,当检索或获取时,或者你可以说在检查时,你只需要确保这个特定的u_id已经旋转了一次,所以不能再进一步旋转

因此,在插入之前,请检查特定用户的用户名或用户id

$sql = "SELECT u_id from user_spins table where u_id = 1 AND flag = 1";
//if yes then don't allow to proceed 
//if no then insert into User_spins table
$sql = "INSERT INTO User_spins (u_id, name,flag) VALUES 
('$username','$name',1)"; 
//Importing our db connection script
 require_once('dbConnect.php');

您可以为用户名和名称列指定唯一约束

使用以下代码更改
选择
表:

ALTER TABLE `Selection` ADD UNIQUE `unique_index`(`username`, `name`);
现在,如果您尝试插入任何已插入的用户名和名称对,将失败。

您的代码容易受到攻击。您应该通过或驱动程序将准备好的语句与绑定参数一起使用。有一些很好的例子。