读取并插入xml文件';s记录使用php-mysql通过For语句而不是Foreach循环


read and insert xml file's records using php mysql via For statement not Foreach Loop

假设我有一个包含200条记录的xml文件,我想使用for语句而不是foreach语句读取120条记录并将其插入mysql。我知道如何使用foreach语句来实现这一点,foreach语句总是读取和插入整个记录,我不希望这样。我使用foreach语句的代码正在工作。我想要使用"For语句"的类似代码。

<?php
$xml=simplexml_load_file("c:'abc.xml");
$fd=count($xml);
foreach ( $xml as $bado)
{
    $name=$bado->name;
    $sex=$bado->sex;
    $address=$bado->address;
    $result=mysql_query("insert into abc (name,sex,address) values ($name,$sex,$address)",$con)
    echo $fd." "."Records successfully added";
}
? >

注意:如果我不想添加整个记录,那么d使用For循环语句,我认为应该是d方法还是其他任何最佳选项?

Foreach也可以用于此。它不必循环并插入所有记录。然而,以下是如何使用for语句来完成

//indexes are 0-indexed, meaning $xml[0] = first, $xml[119] = last (for 120 records)
for($i=0;$i<119;$i++) {
  $user = $xml[$i]; //Provided that the element you are looping over is an array of entities
  //Database insert logic here
}

请,为了小狗的爱,请考虑PDO和准备好的语句,而不是使用不推荐使用的mysql_*函数和未初始化的输入。如果您的XML包含名称"O’malley",它将破坏您的查询!!

更新以包括foreach的样本,并引用字段:

//indexes are 0-indexed, meaning $xml[0] = first, $xml[119] = last (for 120 records)
    for($i=0;$i<119;$i++) {
       $user    = $xml[$i]; //Provided that the element you are looping over is an array of entities
       $name    = $user->name;
       $sex     = $user->sex;
       $address = $user->address;
        $result = mysql_query("insert into abc (name,sex,address) values ($name,$sex,$address)",$con)

    }
echo $i+1." "."Records successfully added";

使用Foreach:

$limit = 119;
$i     = 0;
   //indexes are 0-indexed, meaning $xml[0] = first, $xml[119] = last (for 120 records)
        for($xml as $user) {
           if($i > $limit) {
             break;
           } 
           $name    = $user->name;
           $sex     = $user->sex;
           $address = $user->address;
           $result = mysql_query("insert into abc (name,sex,address) values ($name,$sex,$address)",$con)
           $i++;
        }
echo $i+1." "."Records successfully added";