假设我有一个包含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";