Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
从mysql表中获取数据并在“中使用”;在;在sql查询(PHP)中_Php - Fatal编程技术网

从mysql表中获取数据并在“中使用”;在;在sql查询(PHP)中

从mysql表中获取数据并在“中使用”;在;在sql查询(PHP)中,php,Php,我使用以下php脚本从数据库获取数据: $sev = mysqli_query($conn, "SELECT DISTINCT(SRV) FROM customers WHERE custValue NOT REGEXP '^$' AND id=345532 AND custValue IN ("A+", "B", "C") "); 在数据库服务器上尝试sql查询时,它会正确返回以下数据: ________ |

我使用以下php脚本从数据库获取数据:

$sev = mysqli_query($conn, "SELECT DISTINCT(SRV) FROM customers WHERE custValue NOT REGEXP '^$' AND id=345532 AND custValue IN ("A+", "B", "C") ");
在数据库服务器上尝试sql查询时,它会正确返回以下数据:

________
|  SRV  |
---------
|   A+  |
|   B   |
|   C   |
|   XN  |
|   BN  |
|   DS  |
|   XA  |
---------
然后我试着内爆

$custSev = mysqli_fetch_array($sev);
$csImp = "'" . implode("','", $custSev) . "'";
最后一步,我在另一个查询中使用$csImp

... AND severity IN ($csImp) AND ...
但当我在数据库服务器上检查它时,它会收到以下sql查询:

... AND severity IN ('A+','A+') AND ...
我不知道为什么第一个值有两次,而没有其他值。应该是

... AND severity IN ('A+','A+','C','XN','BN','DS','XA') AND ...
同样,当我在DB服务器上执行这个查询时,它工作正常。我一整天都在努力解决这个问题,尝试了很多组合都没有效果。我还是PHP的初学者。多谢各位

我尝试将$sev更改为$sev=array('A+'、'A+'、'C'、'XN'、'BN'、'DS'、'XA');但是在sql查询中,“…in(“”)…”

我尝试了以下方法:

$row = $sev -> fetch_assoc();
$show = printf ("%s (%s)\n", $row["SRV"]);

并内爆$show变量并在查询中使用它,但“…severity in('')”与前面的情况一样为空。

此处检索到的数据分为几行:

________
|  SRV  |
---------
|   A+  |
|   B   |
|   C   |
|   XN  |
|   BN  |
|   DS  |
|   XA  |
---------
但此代码仅检索第一行:

$custSev = mysqli_fetch_array($sev);
$csImp = "'" . implode("','", $custSev) . "'";
除非另行指定,否则将按列名检索数组索引,并按数字索引检索,因此有两个条目,在内爆时会给出:

... AND severity IN ('A+','A+') AND ...
正如评论中指出的,您可以使用子查询来完成此操作,但要回答您发布的问题:

$severityList = [];
while ($row = mysqli_fetch_array($sev)) {
    $severityList[] = $row['SRV'];

}
$csImp = "'" . implode("','", $severityList) . "'";

**免责声明-我还没有测试过这个。对任何打字错误表示歉意

为什么??如果您有SQL中的数据,那么您可以将其用作子Queryhi Dharman。这听起来合乎逻辑,但PHP脚本中还有其他几个条件,有时不应该执行此查询。
mysql\u fetch\u array()
只返回一行。您只需将第一行中的值放入
$csImp
中,然后应该使用准备好的语句,可能还有一些查询生成器。您应该始终使用准备好的语句并始终绑定参数。
custValue非REGEXP'^$'
可以简化为
custValue!=''谢谢你,切线垂直,谢谢你,我将在床上度过今晚;)真的,非常感谢,它工作得很好。。很抱歉问了这么简单的问题。