2012-07-17 3 views
0

나는 내가 다음 PDO에서 무엇입니까 배열이 있습니다는 PDO 배열

$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); 

배열 반환 값 : DID 값의 각각에 대해

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

를 I dID를 사용하는 insert 쿼리를 실행하고 외부 값을 가진 동일한 데이터베이스의 테이블에 삽입해야합니다.

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

메시지 및 상태 은 하나가 이것 좀 도와 수있는 변수

에서 개최됩니다?

+3

왜이 모든 작업을 하나의 쿼리로 수행하지 않습니까? – RedFilter

답변

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에 처음 왔으며 실제로 도움이 될 것입니다. –

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

합니다. 왜 내가 fetchAll을 사용하고 있는지 잘 모르겠지만.