我有一个数组,我想从数据库中添加另一个值,使用[numo]值查找记录,这里是当前数组:
Array
(
[0] => Array
(
[numo] => 667820161009
)
[1] => Array
(
[numo] => 667820112001
)
这就是我想要实现的目标:
Array
(
[0] => Array
(
[id] => 33
[numo] => 667820161009
)
[1] => Array
(
[id] => 34
[numo] => 667820112001
)
我认为必须遍历数组,嵌套SELECT查询然后插入新的键和值,但我不知道从哪里开始搜索和搜索。
非常感谢您提前帮助
斯图
答案 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']
);
}