简体   繁体   English

如何检查用户是否在表上存在特定字母

[英]How to check if user have exists specific letter on table

I am trying to check if a user has a specific letter on SQL table like:我正在尝试检查用户是否在 SQL 表上有一个特定的字母,例如:

I have SQL Table amx_amxadmins and columns id, username, access example:我有 SQL 表 amx_amxadmins 和列 id、用户名、访问示例:

amx_amxadmins:
--------------------------------------------------
| ID | USERNAME         | ACCESS                 |
--------------------------------------------------
| 1  | TEST1            | abcde                  |
--------------------------------------------------
| 2  | TEST2            | bcde                   |
--------------------------------------------------

The Flag A is for No Access .标志 A 用于No Access

So how do I check if user have in column access A or not?那么我如何检查用户是否在列访问 A 或没有?

For example:例如:

<?php
    $check_user_flag = $mysqli->query("SELECT * FROM `$amxadmins` WHERE `username` = '$logged[username]' AND `access` LIKE 'a' ") or die(mysqli_error($mysqli));
    $checkUSRFLAG = $check_user_flag->fetch_assoc();
    if($checkUSRFLAG->num_rows >  "a"){
        echo "test";
    }
    else {
        echo "test2";
    }
?>
```

EDIT BY RyffLe由 RyffLe 编辑

$query = "SELECT * FROM `$amxadmins` WHERE `username` = ?";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param('s', $param);
    $param = $logged['username'];
    $stmt->execute();
    $result = $stmt->bind_result();
    $stmt->close();

    $Permissions = $obj->access;

    if (strpos($Permissions, 'a')) {
       echo("An A has been found!");
    }
    else {
       echo("An A wasn't Found...");
    }

First of all wellcome on Stackoverflow Beytula Ibryam.首先,欢迎访问 Stackoverflow Beytula Ibryam。

Thats Your table:那是你的桌子:

amx_amxadmins:
--------------------------------------------------
| ID | USERNAME         | ACCESS                 |
--------------------------------------------------
| 1  | TEST1            | abcde                  |
--------------------------------------------------
| 2  | TEST2            | bcde                   |
--------------------------------------------------

First of all you need to select all Data of the User you need to check from your Data:首先,您需要从您的数据中选择您需要检查的所有用户数据:

$query = "SELECT * FROM `$amxadmins` WHERE `username` = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $param);
$param = $logged[username];
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
$obj = $result->fetch_object();

Next is to get your access as string:接下来是将您的访问权限作为字符串:

$Permissions = $obj->access;

Now we can go to check the access for your wanted literals:现在我们可以去检查您想要的文字的访问权限:

if (strpos($Permissions, 'a')) {
   echo("An A has been found!");
}
else {
   echo("An A wasn't Found...");
}

Enjoy ;)享受 ;)

--- EDITS --- --- 编辑 ---

    $query = "SELECT * FROM `?` WHERE `username` = ?";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param('ss', $amxadmins, $logged['username']);
    $stmt->execute();
    $result = $stmt->get_result();
    $stmt->close();
    $obj = $result->fetch_object();

    if($checkUSRFLAG->num_rows >  "a"){
        echo ("test");
    }
    else {
        echo("test2");
    }

If you don't have a MySQLi Connection File, add following lines in to your main file:如果您没有 MySQLi 连接文件,请将以下几行添加到您的主文件中:

$mysqli = new mysqli('YOUR_DATABEAS_IP', 'YOUR_DATABEAS_USER', 'YOUR_DATABEAS_USER_PASSWORD', 'YOUR_DATABEAS_NAME', 'YOUR_DATABEAS_PORT');
        if($mysqli->connect_error) {
          exit('Error connecting to database'); //Should be a message a typical user could understand in production
        }
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

It sounds like you're just looking for a wildcard search.听起来您只是在寻找通配符搜索。 Use the % character for that.为此使用%字符。 So instead of this:所以而不是这个:

AND `access` LIKE 'a'

You'd have this:你会有这个:

AND `access` LIKE '%a%'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM