Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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,我有一个从mysql查询中获取数据的数组 $mysql = "select distinct name from software"; $result = mysqli_query($conn, $mysql); while($myrow = mysqli_fetch_assoc($result)) { $array[] = $myrow; } 我想做的是将数据输出如下: item1, item2, item3 最后,我想做的是能够将该信息存储在一个变量中,用于mysql

我有一个从mysql查询中获取数据的数组

$mysql = "select distinct name from software";
$result = mysqli_query($conn, $mysql);
    while($myrow = mysqli_fetch_assoc($result)) {
      $array[] = $myrow;
}
我想做的是将数据输出如下:

item1, item2, item3
最后,我想做的是能够将该信息存储在一个变量中,用于mysql查询

$array = item1, item2, item3

select * from table where item != ($array)
但是我无法正确输出数据

如果我使用
print\r
会显示数据,并且阵列良好

如果我使用
array\u key()
只获取数字,如何获取名称

打印
输出:

( [0] => Array ( [name] => Skype for Business Basic 2016 - en-us ) [1] => Array ( [name] => Microsoft Visual C++ 2008 Redistributable - x64 9. ) [2] => Array ( [name] => Microsoft Office 365 Business - en-us ) [3] => Array ( [name] => Microsoft Silverlight ) [4] => Array ( [name] => NVIDIA 3D Vision Driver 341.92 ) [5] => Array ( [name] => NVIDIA Graphics Driver 341.92 ) [6] => Array ( [name] => NVIDIA Update 10.4.0 ) [7] => Array ( [name] => NVIDIA HD Audio Driver 1.3.30.1 ) [8] => Array ( [name] => FortiClient ) ) 
执行此操作时:

while($myrow = mysqli_fetch_assoc($result)) {
    $array[] = $myrow;
}
对于获取的每一行,您都将整个行数组追加到
$array
。你可以把它改成

while($myrow = mysqli_fetch_assoc($result)) {
    $array[] = $myrow['name'];
}
仅附加名称字符串。然后,您将拥有一个字符串数组而不是数组数组,
内爆
将为您提供预期的结果。

您可以使用array_column(PHP5.5+)获得所需的值:

print_r(array_column($array, 'name'));

您是否只使用第二个查询的输出而不使用其他内容?如果是这样,为什么要将其存储在数组中?相反,你可以这样做

$namelist = "";
$mysql = "select distinct name from software";
$result = mysqli_query($conn, $mysql);
while($myrow = mysqli_fetch_assoc($result)) {
  $namelist .= mysqli_real_escape_string($conn, $myrow['name']).",";
}
$namelist = substr($namelist, 0, -1);
然后就可以直接进行第二次查询了,这将需要一个NOT IN:

select * from table where item NOT IN ($array)

请注意,在
mysqli\u real\u escape\u string
上使用预先准备好的语句是更好的做法,但在这种情况下,它应该是好的,因为
$namelist
已经直接来自您的数据库。

内爆(',',$array)
?另外,google for
sql不在
中,您不能将这两个查询合并到一个查询数组中吗,Array,Array,Array,Array,Array,Array,Array是我从内爆(“,”,$Array)中得到的全部