如何将数据从一个表复制到另一个表? PHP

时间:2015-07-21 06:29:44

标签: php mysql

以下问题有2个表," Daten"和"服务器"在我的Mysql数据库中称为" csv"他们都得到了" ServerID"在他们里面作为一个列。如何在列" ServerID"中复制数据?从表格"服务器"到" Daten"。

我可能不得不说"服务器" "服务器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);

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

INSERT INTO Server (ServerID)
SELECT ServerID FROM Daten;

这将从Daten

向服务器插入ServerID

将数据从表复制到另一个表的正确方法是:

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

答案 1 :(得分: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循环来导入数据。 这看起来像这样:

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

答案 2 :(得分:0)

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

表1:

InputFilter[] filters = new InputFilter[1];
        filters[0] = new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end,
                    android.text.Spanned dest, int dstart, int dend) {
                if (end > start) {
                    String destTxt = dest.toString();
                    String resultingTxt = destTxt.substring(0, dstart)
                            + source.subSequence(start, end)
                            + destTxt.substring(dend);
                    if (!resultingTxt
                            .matches("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) {
                        return "";
                    } else {
                        String[] splits = resultingTxt.split("\\.");
                        for (int i = 0; i < splits.length; i++) {
                            if (Integer.valueOf(splits[i]) > 255) {
                                return "";
                            }
                        }
                    }
                }
                return null;
            }

        };
        editTxxt.setFilters(filters);

表2:

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;

您在PHP代码中的查询将是:

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

如有任何疑问,请告知我们:)

由于 阿米特

答案 3 :(得分: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); 
?>