Home > Chỉ dẫn lập trình > Đẩy dữ liệu từ mảng vào database

Đẩy dữ liệu từ mảng vào database

December 17th, 2009 Leave a comment Go to comments

Mảng thì to mà thân em MySQL thì nhỏ!
MySQL cho phép chèn nhiều records qua một câu lệnh kiểu như sau
# Câu lệnh insert multiple:
INSERT INTO bảng VALUES (bộ giá trị thứ nhất), (bộ giá trị thứ hai), … (bộ giá trị thứ N);

Vì thế khi đẩy dữ liệu từ mảng vào database ta có thể tạo ra câu lệnh SQL như vậy, thay vì với mỗi phần tử của mảng ta lại tạo ra một bộ và INSERT INTO bảng VALUES (bộ giá trị có được);

Tuy nhiên do cấu hình max_allowed_packet, ta chỉ thực thi được câu lệnh chèn đồng thời 1 phát nhiều bản ghi với chỉ số N giới hạn.

Do đó, code phân tách mảng và generate ra các câu SQL nên làm như sau
<?php
$prefixSQL = 'INSERT INTO phimconheo(id, title, description, source, price, available) VALUES ';
$i = 0;
foreach ($data as $record) {
    $id = intval($record['id']);
    $title = addslashes($record['title']);
    // same above for other fields
    
    $sql .= "($id, $title, $description, $source, $price, $available),";
    $i++;
    if ($i == LIMIT_EXECUTABLE) {
        $sql = substr($sql, 0, strlen($sql) – 1) . ";";
        $sql = $prefixSQL . $sql;
        echo $sql . "\n";
        $i = 0;
        $sql = '';
    }
}

if ($sql != '') {
    $sql = substr($sql, 0, strlen($sql) – 1) . ";";
    $sql = $prefixSQL . $sql;
    echo $sql . "\n";
}

Categories: Chỉ dẫn lập trình Tags: , ,
  1. No comments yet.
  1. No trackbacks yet.
Content (You can use Yahoo! Messenger Emoticons :D = smile)
Captcha