php清理输出表单数组

时间:2016-04-06 21:57:21

标签: 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查询

$array = item1, item2, item3

select * from table where item != ($array)

但是我无法正确输出数据,

如果我使用print_r,则会显示数据且数组正常。

如果我使用array_key()我只能得到这些数字,我怎么能得到这些名字?

print_r输出:

( [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 ) ) 

3 个答案:

答案 0 :(得分:1)

执行此操作时:

while($myrow = mysqli_fetch_assoc($result)) {
    $array[] = $myrow;
}

您要为获取的每一行将整个行数组附加到$array。您可以将其更改为

while($myrow = mysqli_fetch_assoc($result)) {
    $array[] = $myrow['name'];
}

仅附加名称字符串。那么你将拥有一个字符串数组而不是一个数组数组,implode将为你提供你期望的结果。

答案 1 :(得分:0)

您可以使用array_column(PHP 5.5+)来获取所需的值:

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

答案 2 :(得分:0)

您是仅仅使用第二个查询的输出而没有其他内容?如果是,那么为什么要将它存储在数组中?相反,你可以做类似

的事情
plot_surface

然后它直接准备好第二个查询,这需要一个NOT IN:

$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);

请注意,最好在select * from table where item NOT IN ($array) 上使用预准备语句,但在这种情况下,它应该没问题,因为mysqli_real_escape_string已直接来自您的数据库。