Я работаю над функцией импорта из одной базы данных в другую и решил попробовать встроенные функции Mysqli.
Я открыл два соединения, по одному для каждой базы данных, и перебираюстарый (чтобы получить существующих пользователей) и запуск проверки нового, прежде чем выбирать, вставлять или нет данные.
Теперь я не уверен, неправильно ли я использую функцию подготовленных операторов или чтоу меня возникли проблемы с получением правильных результатов.Простой тестовый пример:
$oldDB = new Mysqli(HOST, USER, PASS, 'oldDB');
$newDB = new Mysqli(HOST, USER, PASS, 'newDB');
/*
* Prepared statments
*/
$searchUserStmt = $newDB->prepare('SELECT user_id FROM members WHERE user_id=?');
$searchUserStmt->bind_param('i', $old_user_id);
$searchUserStmt->bind_result($user_id);
/**
* Loop through users
*/
$result = $oldDB->query('SELECT * FROM member_profile LIMIT 10');
while($row = $result->fetch_assoc())
{
var_dump($row['user_id']);
// Check if user is already in DB
$old_user_id = $row['user_id'];
$searchUserStmt->execute();
$searchUserStmt->fetch();
$searchUserStmt->reset();
var_dump($user_id);
}
Мой первый запрос на $oldDB
работает нормально и проходит через пользователей, однако, когда я смотрю user_id
в $newDB
с подготовленным оператором, он возвращает толькоuser_id
первого результата.
Вот пример вывода, который я получаю:
string(1) "1"
int(1)
string(2) "31"
int(1)
string(2) "26"
int(1)
string(3) "105"
int(1)
string(2) "34"
int(1)
string(3) "119"
int(1)
string(2) "36"
int(1)
string(2) "37"
int(1)
string(2) "38"
int(1)
string(2) "39"
int(1)
Кто-нибудь знает, что я делаю неправильно?Я прошел через документы Mysqli, но не нашел ничего, что помогло бы мне.