Мигрирующее блобное поле mysqli - PullRequest
0 голосов
/ 06 марта 2019

в первую очередь, извините за мой плохой английский, и извините, если пост ответил, но я не нашел его.

Я хочу "перенести" поле blob в mysqli, поэтомуЯ хочу получить get_records и сохранить его в другой базе данных (с несколькими подключениями).

У меня есть следующая таблица:

id | name | data | timecreated
1  | Foo  | BLOB | 1551863583

данные могут быть файлами (особенно изображения, но не всегда)..

Как вставить в базу данных?

Когда я делаю оператор INSERT, значение этого столбца будет null.

Приветствие!

РЕДАКТИРОВАТЬ: Это мой код:

    <?php


$con1 = mysqli_connect($con1_host, $con1_user, $con1_pass, $con1_bbdd);
$con2 = mysqli_connect($con2_host, $con2_user, $con2_pass, $con2_bbdd);

function get_records_sql($sql, $con) {
    $ret = array();
    if ($results = $con->query($sql)) {
        while ($row = $results->fetch_array()) {
            $ret []= $row;
        }
        $results->close();
    }
    return $ret;
}

// Get records from foo_bar connection1
$records = get_records_sql("SELECT * FROM foo_bar", $con1);

foreach ($records as $record) {
    // Inserting records to foo_bar connection2
    $sql = "INSERT INTO foo_bar (`name `, `data`, `timecreated`) VALUES ('{$record['name']}', '{$record['data']}', '{$record['timecreated']}')";
    mysqli_query($con2, $sql);
    $id = mysqli_insert_id($con);
}

1 Ответ

0 голосов
/ 20 марта 2019

Наконец я нашел решение.

Я использовал следующим образом:

    // $r is an array, and have data record from con1.foo_bar

    $sql = "INSERT INTO foo_bar (`id`, `name`, `data`, `timecreated`) VALUES ('{$r['id']}', '{$r['name']}', ?, '{$r['timecreated']}')";

    if ($stmt = $con->prepare($sql)) {
        $stmt->bind_param("b", $data);
        $stmt->send_long_data(0, $r['data']);

        if ($stmt->execute()) {
            $id = $stmt->insert_id;
        }
    } else {
        $error = $con->errno . ' ' . $con->error;
        echo $error;
    }

Спасибо за ваши ответы!

...