2014-09-10 2 views
1

Попытка извлечь данные из базовой базы данных phpmyadmin.MySQLi/PHP - сбор данных из одной базы данных. Вставка в другую базу данных

Приведенный ниже код берет данные правильно (прокомментированный раздел подтверждает). Я могу записать его на экран и отобразить его. (Не нужно просто тестирование) Попытка вставить его в другую базу данных, но это не удается.

Я обнаружил, что петли while для вставки не запускаются. Хотя я не могу понять, почему.

Это базовая база данных localhost (тестирование прямо сейчас). Таким образом, данные подключения являются временными.

Любая помощь с благодарностью Спасибо.

<?php 

/* 
    Connect to database 
*/ 
$webhost = 'localhost'; 
$webusername = 'root'; 
$webpassword = ''; 
$webdbname = 'transfertest'; 
$webcon = mysqli_connect($webhost, $webusername, $webpassword, $webdbname); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
/* 
* 
*/ 
$questions = mysqli_query($webcon, "SELECT * FROM questions"); 
$scenarios = mysqli_query($webcon, "SELECT * FROM scenarios"); 
$results = mysqli_query($webcon, "SELECT * FROM results"); 
$employees = mysqli_query($webcon, "SELECT * FROM employees"); 
/* 
* These while loops display the content being pulled from the database correctly. 
while ($row = mysqli_fetch_array($questions)) { 
    echo $row['questionID'] . " : " . $row['question'] . " : " . $row['answers']; 
    echo "</br>"; 
} 
while ($row = mysqli_fetch_array($scenarios)) { 
    echo $row['scenarioID'] . " : " . $row['scenarioTitle'] . " : " . $row['scenarioInformation']; 
    echo "</br>"; 
} 
while ($row = mysqli_fetch_array($results)) { 
    echo $row['employeeID'] . " : " . $row['scenarioID'] . " : " . $row['questionID'] . " : " . $row['answers'] . " : " . $row['correct']; 
    echo "</br>"; 
} 
while ($row = mysqli_fetch_array($employees)) { 
    echo $row['employeeID'] . " : " . $row['firstName'] . " : " . $row['lastName'] . " : " . $row['email'] . " : " . $row['password']; 
    echo "</br>"; 
} 
*/ 
/* ////////////////////////////////////////////////////////////////////////// 
    Connect to database 
*/ 
$mobhost = 'localhost'; 
$mobusername = 'root'; 
$mobpassword = ''; 
$mobdbname = 'exampletransfer'; 
$mobcon = mysqli_connect($mobhost, $mobusername, $mobpassword, $mobdbname); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
/* 
* 
*/ 
while ($row = mysqli_fetch_array($questions)) { 
    mysqli_query($mobcon, "INSERT INTO questions (questionID, question, answers) VALUES (" . $row['questionID'] . ", " . $row['question'] . ", " . $row['answers'] . ")"); 
} 
while ($row = mysqli_fetch_array($scenarios)) { 
    mysqli_query($mobcon, "INSERT INTO scenarios (scenarioID, scenarioTitle, scenarioInformation) VALUES (" . $row['scenariosID'] . ", " . $row['scenarioTitle'] . ", " . $row['scenarioInformation'] . ")"); 
} 
while ($row = mysqli_fetch_array($results)) { 
    mysqli_query($mobcon, "INSERT INTO results (employeeID, scenarioID, questionID, answers, correct) VALUES (" . $row['employeesID'] . ", " . $row['scenariosID'] . ", " . $row['questionID'] . ", " . $row['answers'] . ", " . $row['correct'] . ")"); 
} 
while ($row = mysqli_fetch_array($employees)) { 
    mysqli_query($mobcon, "INSERT INTO employees (employeeID, firstName, lastName, email, password) VALUES (" . $row['employeesID'] . ", " . $row['firstName'] . ", " . $row['lastName'] . ", " . $row['email'] . ", " . $row['password'] . ")"); 
} 
/* 
    Close Connections 
*/ 
mysqli_close($webcon); 
mysqli_close($mobcon); 
/* 
* Error code: 
Notice: Undefined index: scenariosID on line 75 

Notice: Undefined index: employeesID on line 78 

Notice: Undefined index: scenariosID on line 78 

Notice: Undefined index: employeesID on line 81 
*/ 
?> 
+1

Вы уже закрыли соединение с первой базой данных, прежде чем извлекать данные из нее. Просто закройте его позже, после копирования. –

+1

Я думаю, что mysqli_fetch_array ($ questions) не может быть выполнено, так как вы закрыли соединение для этого db. –

+0

Но у меня есть 2 mysqli_connects, не конфликт, если я оставлю его открытым дольше? Я закрываю $ webcon после того, как я сохранил данные в переменной. Разве это не так? – Hamedar

ответ

3

Проблема заключается в том, что вы закроете $ webcon, а затем вы попытаетесь прочитать из него ^^

Вы пытаетесь это сделать ... Это не значит кими;)

  1. Подготовить запрос, mysqli_query($webcon, "SELECT * FROM questions");
  2. Закрыть соединение < < < после этого я не могу прочитать данные
  3. Чтение данных

Попробуйте это пожалуйста.

<?php 

/** 
* Connect to database 
*/ 
$webhost  = 'localhost'; 
$webusername = 'root'; 
$webpassword = ''; 
$webdbname  = 'transfertest'; 
$webcon   = mysqli_connect($webhost, $webusername, $webpassword, $webdbname); 
if (mysqli_connect_errno()) 
{ 
    echo 'Failed to connect to MySQL: ' . mysqli_connect_error(); 
} 

/** 
* Queries for reading 
*/ 
$questions = mysqli_query($webcon, 'SELECT * FROM `questions`'); 
$scenarios = mysqli_query($webcon, 'SELECT * FROM `scenarios`'); 
$results = mysqli_query($webcon, 'SELECT * FROM `results`'); 
$employees = mysqli_query($webcon, 'SELECT * FROM `employees`'); 

/** 
* Connect to database 
*/ 
$mobhost  = 'localhost'; 
$mobusername = 'root'; 
$mobpassword = ''; 
$mobdbname  = 'exampletransfer'; 
$mobcon   = mysqli_connect($mobhost, $mobusername, $mobpassword, $mobdbname); 
if (mysqli_connect_errno()) 
{ 
    echo 'Failed to connect to MySQL: ' . mysqli_connect_error(); 
} 

/** 
* Insert data from old database 
*/ 

// questions 
while ($row = mysqli_fetch_array($questions)) 
{ 
    // escape your strings 
    foreach($row as $key => $val) 
    { 
     $row[$key] = mysqli_real_escape_string($mobcon, $row[$key]); 
    } 
    mysqli_query($mobcon, "INSERT INTO `questions` (`questionID`, `question`, `answers`) VALUES ('" . $row['questionID'] . "', '" . $row['question'] . "', '" . $row['answers'] . "');"); 
} 

// scenarios 
while ($row = mysqli_fetch_array($scenarios)) 
{ 
    // escape your strings 
    foreach($row as $key => $val) 
    { 
     $row[$key] = mysqli_real_escape_string($mobcon, $row[$key]); 
    } 
    mysqli_query($mobcon, "INSERT INTO `scenarios` (`scenarioID`, `scenarioTitle`, `scenarioInformation`) VALUES ('" . $row['scenariosID'] . "', '" . $row['scenarioTitle'] . "', '" . $row['scenarioInformation'] . "');"); 
} 

// results 
while ($row = mysqli_fetch_array($results)) 
{ 
    // escape your strings 
    foreach($row as $key => $val) 
    { 
     $row[$key] = mysqli_real_escape_string($mobcon, $row[$key]); 
    } 
    mysqli_query($mobcon, "INSERT INTO `results` (`employeeID`, `scenarioID`, `questionID`, `answers`, `correct`) VALUES ('" . $row['employeesID'] . "', '" . $row['scenariosID'] . "', '" . $row['questionID'] . "', '" . $row['answers'] . "', '" . $row['correct'] . "');"); 
} 

// employees 
while ($row = mysqli_fetch_array($employees)) 
{ 
    // escape your strings 
    foreach($row as $key => $val) 
    { 
     $row[$key] = mysqli_real_escape_string($mobcon, $row[$key]); 
    } 
    mysqli_query($mobcon, "INSERT INTO `employees` (`employeeID`, `firstName`, `lastName`, `email`, `password`) VALUES ('" . $row['employeesID'] . "', '" . $row['firstName'] . "', '" . $row['lastName'] . "', '" . $row['email'] . "', '" . $row['password'] . "');"); 
} 

/* 
    Close Connections 
*/ 
mysqli_close($mobcon); 
mysqli_close($webcon); 
+0

Пробовал свой код. Получите те же ошибки. Примечание: Undefined индекс: scenariosID на линии 60 Примечание: Undefined индекс: employeesID на линии 71 Примечание: Undefined индекс: scenariosID на линии 71 Извещение: Undefined индекс: employeesID на линии 82 – Hamedar

+0

Его рабочий ... Хотя это все-таки бросая те ошибки, которые я опубликовал выше. Странный. Я попытаюсь сгладить эти ошибки. Спасибо PatrickB – Hamedar

+0

Пришлите мне sql example dump (1 ввод данных достаточно + структура), и я исправлю ^^ – PatrickB

0

В ожидании его на том же сервере и используя те же имя пользователя и пароль:

// Create a new MySQL database connection 
if (!$con = mysql_connect('localhost', $username, $password)) { 
    die('An error occurred while connecting to the MySQL server!<br/>' . mysql_error()); 
} 

if (!mysql_select_db($database)) { 
    die('An error occurred while connecting to the database!<br/>' . mysql_error()); 
} 

// Create an array of MySQL queries to run 
$sql = array(
    'DROP TABLE IF EXISTS `exampletransfer.questions`;', 
    'CREATE TABLE `exampletransfer.questions` SELECT * FROM `transfertest.questions`' 
); 

// Run the MySQL queries 
if (sizeof($sql) > 0) { 
    foreach ($sql as $query) { 
     if (!mysql_query($query)) { 
      die('A MySQL error has occurred!<br/>' . mysql_error()); 
     } 
    } 
} 

При использовании MySQLi вместо MySQL:

// Create a new MySQL database connection 
if (!$con = new mysqli('localhost', $username, $password, $database)) { 
    die('An error occurred while connecting to the MySQL server!<br/>' . $con->connect_error); 
} 

// Create an array of MySQL queries to run 
$sql = array(
    'DROP TABLE IF EXISTS `exampletransfer.questions`;', 
    'CREATE TABLE `exampletransfer.questions` SELECT * FROM `transfertest.questions`' 
); 

// Run the MySQL queries 
if (sizeof($sql) > 0) { 
    foreach ($sql as $query) { 
     if (!$con->query($query)) { 
      die('A MySQL error has occurred!<br/>' . $con->error); 
     } 
    } 
} 

$con->close(); 
Смежные вопросы