2014-09-10 40 views
1

尝试从基本的phpmyadmin数据库中提取数据。MySQLi/PHP - 从一个数据库中提取数据。插入另一个数据库

以下代码正确地拉取数据(注释掉部分验证)。 我可以将它写入屏幕并显示它。 (不需要测试) 尝试将其插入另一个数据库,但失败。

我发现while循环插入不运行。虽然我找不到原因。

这是一个基本的本地主机数据库(现在测试)所以连接数据只是暂时的。

任何帮助,非常感谢 谢谢。

<?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

在您从第一个数据库获取数据之前,您已关闭与第一个数据库的连接。复制后稍后关闭它。 – 2014-09-10 08:41:39

+1

我认为mysqli_fetch_array($ questions)无法完成,因为您关闭了该数据库的连接。 – 2014-09-10 08:42:02

+0

但是我有2个mysqli_connects,如果我把它打开的时间长了,它会发生冲突吗? 我在将数据存储在变量中后关闭$ webcon。那不好吗? – Hamedar 2014-09-10 08:43:17

回答

3

的问题是,你闭上你的$ webcon连接,然后你尝试读取它^^

你试图做到这一点...那不是poss IBLE;)

  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

尝试了您的代码。 获取相同的错误。 注意:未定义指数:scenariosID上线60 注意:未定义指数:employeesID在线71 注意:未定义指数:scenariosID在线71 注意:未定义指数:employeesID上线82 – Hamedar 2014-09-10 08:52:46

+0

其工作......虽然它仍然是抛出我上面发布的错误。奇怪。我会尽力解决这些错误。谢谢PatrickB – Hamedar 2014-09-10 08:56:54

+0

发送给我sql示例转储(1个数据条目足够+结构),我会修复^^ – PatrickB 2014-09-10 09:03:24

0

待定这是在同一台服务器上,并使用相同的用户名和密码:使用库MySQLi而不是MySQL的的

// 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()); 
     } 
    } 
} 

如果:

// 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(); 
相关问题