Php 从数组值中查找数据库记录,并在数组中插入新的键和值
我有一个数组,我想从数据库中添加另一个值,使用[numo]值查找记录,以下是当前数组:Php 从数组值中查找数据库记录,并在数组中插入新的键和值,php,mysql,database,arrays,Php,Mysql,Database,Arrays,我有一个数组,我想从数据库中添加另一个值,使用[numo]值查找记录,以下是当前数组: Array ( [0] => Array ( [numo] => 667820161009 ) [1] => Array ( [numo] => 667820112001 ) 以下是我想要实现的目标: Array ( [0] => Array
Array
(
[0] => Array
(
[numo] => 667820161009
)
[1] => Array
(
[numo] => 667820112001
)
以下是我想要实现的目标:
Array
(
[0] => Array
(
[id] => 33
[numo] => 667820161009
)
[1] => Array
(
[id] => 34
[numo] => 667820112001
)
我假定必须循环遍历数组,嵌套一个SELECT查询,然后插入一个新的键和值,但我不知道从何处开始,搜索了又搜索
非常感谢你的帮助
斯图我不知道你的数据库(特别是这个数据来自的表)的情况下,我的猜测是:
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();
?>
如果您形成一个
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']
);
}
yer,我理解这一部分,是的,您的select查询是正确的,但我想将id作为新的键和值插入数组。哦哦哦这看起来是肯定的,我会尝试一下,谢谢Nick。。。很快回复!!