gpt4 book ai didi

php - 从数据库中选择 WHERE somefield 包含值之一

转载 作者:行者123 更新时间:2023-11-29 07:44:19 25 4
gpt4 key购买 nike

我有一个直接的脚本,如果访问代码正确,它会返回用户数据。

$sql = "SELECT * FROM users WHERE access_codes = '$CODE' ";
$rs = $mysqli->query($sql);
$rows = mysqli_num_rows($rs);
if ($rows == 1) {
//CODE IS FOUND, RETURN USERNAME AND PASSWORD
$row = mysqli_fetch_array($rs);
$username = $row['username'];
$password = $row['password'];
mysqli_close($mysqli); // Closing Connection
header("Location: http://GOTONEXTPAGE.COM");
die();

} else {
//CODE IS NOT FOUND
mysqli_close($mysqli); // Closing Connection
exit;
}

如果 access_codes 仅包含 1 个值,则效果很好。

但我想要实现的是 access_codes 可以包含多个代码,用空格分隔,例如:123456 654321 0101020304。

如果找到这些代码中的任何,我仍然可以检索用户数据。

我可以通过查询来做到这一点,还是需要使用 php 来解决?

问候中号

最佳答案

如果您能够规范化架构,那就最好了。制作一个访问代码表,其中 userID 的每个组合各占一行。和access_code 。然后你可以使用JOIN在此表和 users 之间表来获取具有特定访问代码的用户。

如果无法重新设计,可以使用正则表达式:

$sql = "SELECT * FROM users WHERE access_code RLIKE CONCAT('[[:<:]]', ?, '[[:>:]]')";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', $CODE);
$stmt->execute();

[[:<:]][[:>:]]匹配单词边界,因此仅当代码是列中的整个单词时才会匹配。

关于php - 从数据库中选择 WHERE somefield 包含值之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28250121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com