2015-07-21 86 views
2

下面的问题有两个表,我的Mysql数据库中的“Daten”和“Server”称为“csv”,他们都以“ServerID”作为列。如何将表“ServerID”列中的数据复制到“Daten”。如何将数据从一张表复制到另一张表中? PHP

我可能不得不说,“服务器”“服务器ID”中的数字是自动增量。

我想要的结果是:在ServerID中是一个数字,我也希望这个数字在另一个表中。

我试过,但它只是给我: “111111111111111111111111111111111111”

$con=mysqli_connect("localhost","THUNI","root","csv"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="SELECT ServerID FROM Server"; 
$result=mysqli_query($con,$sql); 


//Associative array 
$row=mysqli_fetch_array($result, MYSQLI_ASSOC); 
printf ($row["ServerID"]); 

// Free result set 
mysqli_free_result($result); 

有人能帮助我吗?

+0

要从表中选择一个字段只需添加'table.field'。你的情况是'SELECT Server.ServerID FROM Server' – Hearner

+0

如果你想“复制”它们,你必须将'insert into table2(field1,field2)VALUES($ row [“field1”],$ row [“field2” ])'。Withjout你的数据库是很难帮助你proporable – Hearner

+0

给我你的数据库 – Hearner

回答

1

感谢大家,我做到了,这并不难。 解决方案是功能,你可以同时插入所有东西,这就是我想要的功能。函数可能看起来像这样:

Function getserverID($Servername) 
{ 
    //Check if the entery is already in the DB 
    //to provide double enteries 
    $result = mysql_query("select * from Server where Servername = lower('$Servername')"); 
    $num_rows = mysql_num_rows($result); 
    if ($Servername =="avlrbrcl03"){ 
    //echo ($num_rows); 
    } 
     //If it is not existing, create the entery 
     if($num_rows == 0){ 
      $import="INSERT into Server(Servername) values(lower('$Servername'))"; 
       mysql_query($import) or die(mysql_error()); 
       $ID=mysql_insert_id(); 

       //and if existing save it as a variable 
       }else{ 
        $row = mysql_fetch_assoc($result); 
        $ID= $row["ServerID"]; 
        } 

     return $ID; 
} 

如果你已经做到了这一点,你必须创建一个While循环导入DATAS。 这可能看起来像这样:

while(($data = fgetcsv($handle, 1000, ";")) !== FALSE) 
    { 
    $Storagetyp = getstoragetyp($_FILES['filename']['name']); 
    $ServerID = getserverID($data[0]); 
    $Datum = getdatumID($data[2]); 

    //Check if there is already such a entry 
    $result = mysql_query ("select * from Daten where ServerID = '$ServerID' and Speicherplatz = '$data[1]' and DatumID = '$Datum'"); 
    $num_rows = mysql_num_rows($result); 

     //If it doesn't exist, import it 
     if($num_rows == 0){ 
      $import="INSERT into Daten(Speicherplatz, DatumID, ServerID, Storagetyp) values('$data[1]','$Datum','$ServerID','$Storagetyp')"; 
       mysql_query($import) or die(mysql_error()); 
      } 
} 
1
INSERT INTO Server (ServerID) 
SELECT ServerID FROM Daten; 

这将插入服务器的服务器ID从回到名单Daten

的正确方法从表中复制到另一台DATAS是:

INSERT INTO table2 
SELECT * FROM table1; 

或者

INSERT INTO table2 
(column_name(s)) 
SELECT column_name(s) 
FROM table1; 

在你脚本,它应该是这样的

$con=mysqli_connect("localhost","THUNI","root","csv"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="Insert into Server 
     Select * from Daten"; 
mysqli_query($con,$sql); // That inserts the data from Daten to Server 

$query = "SELECT ServerID FROM Server"; 
$result = mysqli_query($con,$query); // You're selecting ServerID in Server 

echo "The result are ". mysqli_fetch_array($result)['ServerID']; // It gives all ServerID from Server 
+0

在一个PHP脚本? – nicolas

+0

加入'INSERT INTO服务器(ServerID) 选择ServerID从Daten;'在一个'mysqli_query'中它已经完成 – Hearner

+0

我正在写它:) – Hearner

0

确保您的表格具有相同的架构。

表1:

CREATE TABLE IF NOT EXISTS `email` (
    `email` varchar(255) NOT NULL, 
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

表2:

CREATE TABLE IF NOT EXISTS `email_table` (
    `email` varchar(255) NOT NULL, 
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

你的PHP代码中的查询是:

insert into email_table (select * from email); 

乐牛逼我知道的情况下任意查询:)

感谢 阿米特

+0

是否必须将“ServerID”都设置为主键? – nicolas

+0

“服务器”中的“ServerID”使用auto_increment作为数字 – nicolas

0

使用下面的代码来做到这一点。

<?php 

$con=mysql_connect("localhost","root","THUNI"); 
mysql_select_db("csv",$con); 

$sql="INSERT INTO Daten (ServerID) 
SELECT ServerID FROM Server"; 
mysql_query($sql); 
?> 
相关问题