2012-07-17 52 views
0

我有我从下面的PDO得到一个数组:PDO阵列从MySQL查询到插入查询

$sqlQry = "SELECT Devices.dID FROM Friends LEFT OUTER JOIN Devices ON Friends.fID = Devices.dUID WHERE Devices.dID IS NOT NULL GROUP BY Devices.dID"; 
$db = getConnection(); 
$sth = $db->prepare($sqlQry); 
$sth->execute(); 
print("Fetch all of the remaining rows in the result set:\n"); 
$result = $sth->fetchAll(); 
print_r($result); 

数组返回:

Array ([0] => Array ([dID] => 2[0] => 2) [1] => Array ([dID] => 3 [0] => 3)) 

对于DID值中的每一个I需要运行插入查询,该插入查询采用dID并将其插入到具有外部值的同一个数据库中的表中。

$sqlIns = "INSERT INTO messages (dID, message, status") VALUES (?,?,?); 

消息和状态将在可变

举行任何一个可以帮助我这一个?

+3

为什么不在一个查询中完成这一切? – RedFilter 2012-07-17 13:04:18

回答

2

您可以在一个查询中完成所有操作。请参阅文档:INSERT ... SELECT Syntax

INSERT into messages (dID, message, status) 
SELECT Devices.dID, ?, ? 
FROM Friends 
LEFT OUTER JOIN Devices ON Friends.fID = Devices.dUID 
WHERE Devices.dID IS NOT NULL 
GROUP BY Devices.dID 

的PDO会是这个样子:

// database connection 
$conn = new PDO(...); 

// new data 
$message = 'xxx'; 
$status = 'yyy'; 

// query 
$sql = "INSERT into messages (dID, message, status) 
    SELECT Devices.dID, ?, ? 
    FROM Friends 
    LEFT OUTER JOIN Devices ON Friends.fID = Devices.dUID 
    WHERE Devices.dID IS NOT NULL 
    GROUP BY Devices.dID"; 
$q = $conn->prepare($sql); 
$q->execute(array($message,$status)); 
+0

谢谢你会发布你如何做它我是新来的PDO它会真的帮助我 – 2012-07-17 13:05:46

0
foreach($result as $idValue) { 
    $sqlIns = "INSERT INTO messages (dID, message, status) VALUES ($idValue[0],?,?)"; 
} 

这应该做的伎俩。虽然我不确定你为什么使用fetchAll