Php XML代码在数据库中插入相同的cname两次,而不是插入';美国';和';英国';

Php XML代码在数据库中插入相同的cname两次,而不是插入';美国';和';英国';,php,xml,Php,Xml,下面的代码是在PHP中使用XML将“cname”字段插入“tbl_country”。我想分别添加'USA'和'UK',但是代码会插入两次'USA'“cid”是“tbl\U国家”中的主键自动增量字段 <?php $xmlData =<<< END <?xml version="1.0"?> <Country> <cname>USA</cname> <cname>UK&

下面的代码是在PHP中使用XML将“cname”字段插入“tbl_country”。我想分别添加'USA'和'UK',但是代码会插入两次'USA'“cid”是“tbl\U国家”中的主键自动增量字段

<?php
    $xmlData =<<< END
    <?xml version="1.0"?>
    <Country>
      <cname>USA</cname>
      <cname>UK</cname>
    </Country>
    END;


    //xml code for database connection        
    $xml = simplexml_load_string($xmlData) or die("ERROR: Cannot create SimpleXML object");
    $con = mysqli_connect("localhost", "root", "admin", "regdb") or die ("ERROR: Cannot connect");

    /* Assumes that the number of IDs = number of countries */
    $size = sizeOf($xml->cname);
    $i = 0; //index

    /* Add each country to the database
    while($i != $size) 
    {
        //echo $xml->id[$i]; //Test
        $sql = "INSERT INTO tbl_country(cname) VALUES('$xml->cname')";
        $con->query($sql);
        $i++; //increment index
    }

    mysqli_close($con);

美国
英国
结束;
//用于数据库连接的xml代码
$xml=simplexml\u load\u string($xmlData)或die(“错误:无法创建simplexml对象”);
$con=mysqli_connect(“localhost”、“root”、“admin”、“regdb”)或die(“错误:无法连接”);
/*假设ID的数量=国家的数量*/
$size=sizeOf($xml->cname);
$i=0//指数
/*将每个国家/地区添加到数据库中
而($i!=$size)
{
//echo$xml->id[$i];//测试
$sql=“插入tbl_国家(cname)值(“$xml->cname”)”;
$con->query($sql);
$i++;//增量索引
}
mysqli_close($con);

您还需要通过索引:

$cnames = $xml->cname;
$sql = "INSERT INTO tbl_country(cname) VALUES('$cnames[$i]')";

这样,您就可以遍历每个值。否则,只返回第一个匹配标记的值。这就是您的情况。

您还需要通过索引:

$cnames = $xml->cname;
$sql = "INSERT INTO tbl_country(cname) VALUES('$cnames[$i]')";

这样,您就可以遍历每个值。否则,只返回第一个匹配标记的值。这就是您的情况。

使用
for
和一些附加变量(
$i
$size
)-使用
foreach

/* Assumes that the number of IDs = number of countries */
//$size = sizeOf($xml->cname);
//$i = 0; //index

/* Add each country to the database */
foreach ($xml->cname as $item) {
    $sql = "INSERT INTO tbl_country(cname) VALUES('$item')";
    $con->query($sql);
}

当然要考虑迁移到<强>准备好的语句<强>您的查询。< /p> 而不是使用<代码> < /COD> >和一些附加变量(<代码> $i < /COD>,<代码> $大小< /代码>)-使用<代码>前缀 >:

/* Assumes that the number of IDs = number of countries */
//$size = sizeOf($xml->cname);
//$i = 0; //index

/* Add each country to the database */
foreach ($xml->cname as $item) {
    $sql = "INSERT INTO tbl_country(cname) VALUES('$item')";
    $con->query($sql);
}

当然要考虑用查询移动到<强>准备好的语句< /强>。

递增<代码> $i <代码>不会影响XML值。递增<代码> $i <代码>不会影响XML值。