Php 无法选择所有已使用\u id但不在$admin\u id中的记录

Php 无法选择所有已使用\u id但不在$admin\u id中的记录,php,mysql,Php,Mysql,我正在尝试获取一些行,如果$admin_id中的用户id不存在 $admin_ID = "1, 32, 34"; foreach($con->query('SELECT user_agent FROM wp_access_log WHERE user_id NOT IN ($admin_ID)') as $row2) { $user_agent2 = $row2['user_agent']; $browser2 = new BrowserDetection();

我正在尝试获取一些行,如果$admin_id中的用户id不存在

$admin_ID = "1, 32, 34";
foreach($con->query('SELECT user_agent FROM wp_access_log WHERE user_id NOT IN ($admin_ID)') as $row2) {  
    $user_agent2 = $row2['user_agent'];
    $browser2 = new BrowserDetection();
    $browser2->setUserAgent($user_agent2);
    $browserName2  = $browser2->getPlatform();                //string
    $browserNameString2[] = $browserName2;
}

$string = var_export(array_count_values($browserNameString2), true);

echo "<table id='datatable-buttons' class='table table-striped table-bordered dt-responsive' cellspacing='0' width='100%'>";
    echo "<tr><td><b>Browser</b></td><td><b>Visits</b></td></tr>";
    $string = str_replace("array (","",$string);
    $string = str_replace("' => ","</td><td>",$string);
    $string = str_replace(",","</td></tr>",$string);
    $string = str_replace(")","",$string);
    $string = str_replace("'","<tr><td>",$string);
$string = $string . "</table>";
echo $string;
然后代码运行良好,并从数据库加载所有记录


我能得到一个指针来指出我在这里做错了什么吗?

PHP
只有当插值字符串是双引号时,变量插值才有效。因此
PHP
不会在
SQL
查询中替换
$admin\u ID
值,该值位于单引号之间,因此得到的查询不正确。将查询置于双引号中:


“从wp\u访问日志中选择user\u agent,其中user\u id不在($admin\u id)”
PHP
变量插值仅在插值字符串为双引号时有效。因此
PHP
不会在
SQL
查询中替换
$admin\u ID
值,该值位于单引号之间,因此得到的查询不正确。将查询置于双引号中:


“从wp\u访问日志中选择用户\u代理,其中用户\u id不在($admin\u id)”

$browsernamestring2可以很好地工作,如果我只是尝试检索所有记录。当我使用“WHERE user\u id NOT IN($admin\u id)”时,我会得到一个problem@SandyBeach,您不会检查任何错误或处理任何边缘情况,如0结果。如果是这样的话,您的错误很可能会暴露出来。
$admin\u ID
需要被视为一个数组,并且可能会内爆。@chris85我想这也是关于我所说的;OP没有将初始变量作为数组处理,除非有什么我没有掌握。@Fred ii-但它是一个字符串,没有?$browsernamestring2可以很好地工作,如果我只是尝试检索所有记录。当我使用“WHERE user\u id NOT IN($admin\u id)”时,我会得到一个problem@SandyBeach,您不会检查任何错误或处理任何边缘情况,如0结果。如果是这样的话,您的错误很可能会暴露出来。
$admin\u ID
需要被视为一个数组,并且可能会内爆。@chris85我想这也是关于我所说的;OP没有把初始变量当作数组,除非有什么我不明白的地方。@Fred ii-它是一个字符串,不是吗?谢谢你的解释,你的右引号改成了双引号,现在效果很好。谢谢你的解释,你的右引号改成了双引号,现在效果很好。
 WHERE user_id NOT IN ($admin_ID)