0

次の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);

配列は以下を返します:

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

dID値のそれぞれについて、dIDを取得し、それを同じデータベース内の外部値を持つテーブルに挿入する挿入クエリを実行する必要があります。

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

メッセージとステータスは変数に保持されます

誰かがこれを手伝ってくれる?

4

2 に答える 2

2

これはすべて1つのクエリで実行できます。ドキュメントを参照してください:INSERT...SELECT構文

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));
于 2012-07-17T13:04:47.223 に答える
0
foreach( $result as $idValue ) {
    $sqlIns = "INSERT INTO messages (dID, message, status) VALUES ($idValue[0],?,?)";
}

それでうまくいくはずです。なぜ使っているのかわかりませんがfetchAll

于 2012-07-17T13:06:01.733 に答える