2012-07-17 48 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