join(string $glue, array $pieces): string
// 等同於 implode()
<?php
$key = array();
$val = array();
foreach ($_POST as $k => $v) {
// 過濾鍵名:反引號包裹、防 SQL 注入
$key[] = '`' . strip_tags(mysql_real_escape_string(trim($k))) . '`';
// 過濾值:單引號包裹、防 SQL 注入
$val[] = "'" . strip_tags(mysql_real_escape_string(trim($v))) . "'";
}
$keys = join(",", $key); // `col1`,`col2`,`col3`
$vals = join(",", $val); // 'val1','val2','val3'
$sql = "INSERT INTO table_name ($keys) VALUES ($vals)";
// 執行 $sql...
?>
此範例使用已棄用的 mysql_real_escape_string(),且手動拼裝 SQL 存在注入風險!
現代寫法請改用 PDO 預備語句:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$keys = array_keys($_POST);
$placeholders = join(',', array_fill(0, count($keys), '?'));
$sql = "INSERT INTO table_name (`" . join('`,`', $keys) . "`) VALUES ($placeholders)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array_values($_POST));
?>
| 場景 | 程式碼 | 結果 |
|---|---|---|
| 陣列轉 CSV 行 | join(',', $row) | a,b,c |
| 標籤字串 | join(' ', $tags) | php mysql tutorial |
| 路徑組合 | join('/', $parts) | var/www/html |
| SQL IN 子句 | join(',', array_fill(0, count($ids), '?')) | ?,?,? |
| URL 參數 | join('&', $params) | a=1&b=2 |
join() / implode() 是 C 實作,**極快**,優於迴圈字串連接join(),避免重複記憶體分配