使用PHP 和PDO 將陣列插入MySQL
初始化線上程式時,客戶可以註冊多個以三位數整數表示的程式,並且儲存在數組中。例如,要註冊節目155、165、175 和185,將使用以下數組:
<code class="php">$data = array(155, 165, 175, 185);</code>
傳統上,會建立一個循環來執行多個INSERT 語句,例如:
<code class="php">for($j = 0; $j < (count($data)-1); $j++) { $stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()"); $stmt->execute(array($memberid, $data[$j])); }</code>
但是,建立單一動態SQL 語句被認為更有效。一個可能的解決方案是:
<code class="php">$sql = array(); foreach( $data as $row ) { $sql[] = '("'.$memberid.'", "'.$row[$j].'", NOW()")'; } mysql_real_query('INSERT INTO table (memberid, programid) VALUES '.implode(',', $sql));</code>
使用PDO,更合適的方法是:
<code class="php">$sql = 'INSERT INTO table (memberID, programID) VALUES '; $insertQuery = array(); $insertData = array(); foreach ($data as $row) { $insertQuery[] = '(?, ?)'; $insertData[] = $memberid; $insertData[] = $row; } if (!empty($insertQuery)) { $sql .= implode(', ', $insertQuery); $stmt = $db->prepare($sql); $stmt->execute($insertData); }</code>
此技術允許使用單一準備好的語句將多行插入到資料庫中,從而減少資料庫呼叫次數並提高效能。
以上是如何使用 PHP 和 PDO 有效率地將多行插入 MySQL 表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!