ФорумПрограммированиеPHP для идиотов → многострочный insert-конструктор, говнокод?

многострочный insert-конструктор, говнокод?

  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 7 февраля 2011 г. 12:56

    	function sql_insert_constructror($table, $values, $data)
    {
    $values = preg_replace('/([^, ]+)/', '`$1`', $values);
    $sql = "INSERT INTO `$table` ($values) VALUES ";
    foreach ($data as $row) {
    $sql .= "\n(".preg_replace(array('/([^,]+)/', '/\'(NULL|\d+)\'/'),
    array('\'$1\'', '$1'), implode(',', $row)).'),';
    }
    $sql = substr_replace($sql, ';', -1, 1);
    return $sql;
    }


    echo sql_insert_constructror('lessons', 'lid, lname, lgroup', array(array('NULL', 'TEST', 1),array('NULL', 'UJDYJ', 2)));

    выведет:
    INSERT INTO `lessons` (`lid`, `lname`, `lgroup`) VALUES 
    (NULL,'TEST',1),
    (NULL,'UJDYJ',2);
  • Sinkler

    Сообщения: 7931 Репутация: N Группа: в ухо

    Spritz 7 февраля 2011 г. 13:01, спустя 5 минут 34 секунды

    повторюсь:
    один метод для добавления одной строки,
    второй метод для добавления множества строк юзает первый метод,
    регулярка - это ужас
    Спустя 30 сек.
    люблю декомпозировать
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 7 февраля 2011 г. 13:02, спустя 49 секунд


    повторюсь:
    один метод для добавления одной строки,
    второй метод для добавления множества строк юзает первый метод,
    регулярка - это ужас
    Спустя 30 сек.
    люблю декомпозировать


    а как же автоэскейпинг
  • f0rm4t

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 7 февраля 2011 г. 13:32, спустя 30 минут 7 секунд

    function sql_insert($table, $data) {
    if (!$data)
    return false;

    $sql = 'insert into `' . $table . '` (`' . implode('`,`', array_keys($data[0])) . '`) values ';
    $total = count($data);
    for ($i = 0; $i < $total; $i++) {
    $sql .= '(`' . implode('`,`', $data[$i]) . '`) ';
    if ($i < $total - 1)
    $sql .= ', ';
    }

    return $sql;
    }


    usage:
    $data	= array(
    array(
    'key' => 'key1',
    'value' => 'blah-blah-blah'
    ),
    array(
    'key' => 'key2',
    'value' => 'blah-blah-blah-blah-blah'
    )
    );
    sql_insert('test_table', $data);


    На работоспособность не проверял, писал на коленке
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 7 февраля 2011 г. 14:07, спустя 34 минуты 46 секунд


    function sql_insert($table, $data) {
    if (!$data)
    return false;

    $sql = 'insert into `' . $table . '` (`' . implode('`,`', array_keys($data[0])) . '`) values ';
    $total = count($data);
    for ($i = 0; $i < $total; $i++) {
    $sql .= '(`' . implode('`,`', $data[$i]) . '`) ';
    if ($i < $total - 1)
    $sql .= ', ';
    }

    return $sql;
    }


    хуету написал, у тебя значения обрамляются `

    usage:
    $data	= array(
    array(
    'key' => 'key1',
    'value' => 'blah-blah-blah'
    ),
    array(
    'key' => 'key2',
    'value' => 'blah-blah-blah-blah-blah'
    )
    );
    sql_insert('test_table', $data);


    На работоспособность не проверял, писал на коленке
    Спустя 28 сек.
    хуету написал, у тебя значения обрамляются `
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 февраля 2011 г. 20:42, спустя 6 часов 35 минут 14 секунд

    писал на коленке

    мог не говорить, ты всегда так пишешь :D
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!