Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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,我想在我的数据库中搜索一些用户名,如下-> $skip = $_POST['username']; $_SESSION['skip_user'] = array(); array_push($_SESSION['skip_user'],$skip); $str = $_SESSION['skip_user']; $string = rtrim(implode(',', $str), ','); 现在字符串变量看起来像“name1,name2,name3” 这会获取用户,但我不想要这些用户。我的

我想在我的数据库中搜索一些用户名,如下->

$skip = $_POST['username'];
$_SESSION['skip_user'] = array();
array_push($_SESSION['skip_user'],$skip);
$str = $_SESSION['skip_user'];
$string = rtrim(implode(',', $str), ',');
现在字符串变量看起来像“name1,name2,name3”

这会获取用户,但我不想要这些用户。我的意思是,我可以在哪里写
where username!在({$string})中

获取除“name1、name2、name3”以外的所有用户

现在,在添加NOT IN后,我收到错误消息

mysqli_query($db, "SELECT * FROM users  WHERE username NOT IN ({$string}) ORDER BY id DESC")or die(mysqli_error($db)); php is giving error Unknown column 'name1' in 'where clause'

您应该使用
NOT IN
排除某些值

mysqli_query($db, "SELECT * FROM users WHERE username NOT IN ('name1', 'name2') ORDER BY id DESC");

您应该使用
NOT IN
排除某些值

mysqli_query($db, "SELECT * FROM users WHERE username NOT IN ('name1', 'name2') ORDER BY id DESC");

请尝试在SQL查询中的中不使用

不过,首先尝试在sql查询的
部分而不是
部分尝试的值中添加引号

$str = '';
foreach ($_SESSION['skip_user'] AS $word) {
    $str .= "'$word',";
}
$str = rtrim($str, ',');
然后在查询中使用此
$str
。另外,试着养成一种习惯,不使用``作为列名,如下所示:

SELECT `SOMETHING` FROM `TABLE_NAME` WHERE <CONDITION>
从'TABLE_NAME'中选择'SOMETHING'

我希望这有帮助

在SQL查询中尝试
不在

不过,首先尝试在sql查询的
部分而不是
部分尝试的值中添加引号

$str = '';
foreach ($_SESSION['skip_user'] AS $word) {
    $str .= "'$word',";
}
$str = rtrim($str, ',');
然后在查询中使用此
$str
。另外,试着养成一种习惯,不使用``作为列名,如下所示:

SELECT `SOMETHING` FROM `TABLE_NAME` WHERE <CONDITION>
从'TABLE_NAME'中选择'SOMETHING'
我希望这有帮助

是的,只需键入“not”而不是“!”

从垃圾不在的表中选择*('item1','item2','item3')

1) 虽然您没有在内爆中添加引号,但您还有一些其他问题:

// you need quotes here
$string = implode("','", $str);
// And here
mysqli_query($db, "SELECT * FROM users WHERE username in ('{$string}') ORDER BY id DESC");
然而,这才是你真正应该做的

2) 当您打开SQL注入时,应该绑定参数:

$params = array();
$params[0] = "";
$sql = "SELECT * FROM users WHERE username NOT IN (";
foreach($str as $s){
    $params[0] .= "s";
    array_push($params, $s);
    $sql .= "?, ";
}
$sql = rtrim($sql, " ,").") ORDER BY id DESC";

$stmt = $conn->prepare($sql);

// this is the same as doing: $stmt->bind_param('s', $param);
call_user_func_array(array($stmt, 'bind_param'), $params);

// execute and get results
$stmt->execute();
是的,只要输入“不是”而不是“!”

从垃圾不在的表中选择*('item1','item2','item3')

1) 虽然您没有在内爆中添加引号,但您还有一些其他问题:

// you need quotes here
$string = implode("','", $str);
// And here
mysqli_query($db, "SELECT * FROM users WHERE username in ('{$string}') ORDER BY id DESC");
然而,这才是你真正应该做的

2) 当您打开SQL注入时,应该绑定参数:

$params = array();
$params[0] = "";
$sql = "SELECT * FROM users WHERE username NOT IN (";
foreach($str as $s){
    $params[0] .= "s";
    array_push($params, $s);
    $sql .= "?, ";
}
$sql = rtrim($sql, " ,").") ORDER BY id DESC";

$stmt = $conn->prepare($sql);

// this is the same as doing: $stmt->bind_param('s', $param);
call_user_func_array(array($stmt, 'bind_param'), $params);

// execute and get results
$stmt->execute();

我在查询中收到一个错误。mysqli_query($db,“从用户名不按id DESC({$string})顺序排列的用户中选择*)或die(mysqli_error($db));php在“where子句”@SagarSingh中给出错误未知列“name1”-由于缺少引号,请阅读我的答案以获得解决方案。您仍然可以使用内爆无理由loop@Pamblam我可以用它来使用和查询吗?像这样->
其中用户名不在({$string})中,id不在({$id})中
是的,这也是有效的SQL,只要
{$id}
包含格式正确的字符串!我在查询中收到一个错误。mysqli_query($db,“从用户名不按id DESC({$string})顺序排列的用户中选择*)或die(mysqli_error($db));php在“where子句”@SagarSingh中给出错误未知列“name1”-由于缺少引号,请阅读我的答案以获得解决方案。您仍然可以使用内爆无理由loop@Pamblam我可以用它来使用和查询吗?像这样->
其中用户名不在({$string})中,id不在({$id})中
是的,这也是有效的SQL,只要
{$id}
包含格式正确的字符串!您正在寻找'WHERE NOT IN()``功能您正在寻找'WHERE NOT IN()``功能