2015-07-21 166 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); 
?> 
相關問題