如何使用pdo mysql在PHP中获取包含多个值的多行值,这些值包含多个逗号,逗号分隔

时间:2019-01-07 05:24:31

标签: php mysql pdo

我有一个数据库表名簿。现在我需要从包含以逗号分隔的多个值的多个行值(列名位置)中获取值。现在我需要使用pdo php从多个行中获取值到数组中。 非常感谢
enter image description here

<?php
require_once "includes\config.php";

$sql = 'SELECT * FROM books WHERE shelf_no=2';
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetchALl(PDO::FETCH_ASSOC);
$d = array();
foreach ($row as $value) {
$d[] = explode(",",$value['position']);
}

print_r($d);
?>

结果是

Array (
  [0] => Array (
    [0] => b1 
    [1] => b2 
  ) 
  [1] => Array ( 
    [0] => a2 
    [1] => a3
  )
)

但是我需要单个数组中的所有值

2 个答案:

答案 0 :(得分:0)

您将其分解(创建一个新数组),然后将该数组添加到另一个数组中。

您可以遍历爆炸字符串中的每个值并添加它们:

<?php
require_once "includes\config.php";

$sql = 'SELECT * FROM books WHERE shelf_no=2';
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetchALl(PDO::FETCH_ASSOC);
$d = array();
foreach ($row as $value) {
    $temp = explode(",",$value['position']);
    foreach($temp as $pos){
        array_push($d, trim($pos));
    }   
}

print_r($d);
?>

如果有重复,它们将显示。

答案 1 :(得分:0)

您也可以替换

$d[] = explode(",",$value['position']);

array_merge($d, explode(',', $value['position']));

这将使一个数组而不是数组的数组。有关array_merge的更多信息,请访问php.net。

许多PHP函数的性能要比用PHP编写的等效函数更高。即这可能比嵌套的foreach循环要快。与往常一样,如果这对您很重要,请同时安排时间。