从数组值查找数据库记录并将新键和值插入到数组中

时间:2011-11-27 00:09:11

标签: php mysql database arrays

我有一个数组,我想从数据库中添加另一个值,使用[numo]值查找记录,这里是当前数组:

Array
(
    [0] => Array
        (
            [numo] => 667820161009
        )

    [1] => Array
        (
            [numo] => 667820112001
        )

这就是我想要实现的目标:

Array
(
    [0] => Array
        (
            [id] => 33
            [numo] => 667820161009
        )

    [1] => Array
        (
            [id] => 34
            [numo] => 667820112001
        )

我认为必须遍历数组,嵌套SELECT查询然后插入新的键和值,但我不知道从哪里开始搜索和搜索。

非常感谢您提前帮助

斯图

2 个答案:

答案 0 :(得分:1)

我的猜测是不知道你的数据库(或者特别是这个数据来自的表)的任何内容:

SELECT id FROM table WHERE numo = 667820112001

一些PHP与此相符:

<?php
$array = array(
    array(
        'numo' => 667820161009
    ),
    array(
        'numo' => 667820112001
    )
);

$stmt = $pdo->prepare('SELECT id FROM table WHERE numo = :numo');
$stmt->bindColumn('id', $id);

foreach($array as &$child) {
    $stmt->execute(array(
        ':numo' => $child['numo']
    ));

    $child['id'] = ($stmt->fetch(PDO::FETCH_BOUND)) ? $id : null;

    $stmt->closeCursor();
}
?>

但是你可以用以下方法消除一些查询:

<?php
$array = array(
    array(
        'numo' => 667820161009
    ),
    array(
        'numo' => 667820112001
    )
);

$numos = array()
foreach($array as $child) {
    $numos[] = $child['numo'];
}

$stmt = $pdo->prepare('SELECT id FROM table WHERE numo IN ('.implode(',', $numos).')');
$array = $pdo->fetchAll();
?>

答案 1 :(得分:1)

如果形成numo值数组,则可以使用一个SQL查询来获取所有ID值。

$array = array( ...);

$numos = array();
foreach( $array as $entry)
{
    $numos[] = $entry['numo'];
}

$sql = 'SELECT id, numo FROM table WHERE numo IN ( ' . implode( ', ', $numos) . ' )';
$result = mysql_query( $sql);

$array = array(); // Reset the array
while( $row = mysql_fetch_array( $result))
{
    $array[] = array(
        'id' => $row['id'],
        'numo' => $row['numo']
    );
}