1

値 startlat、startlon、endlat、endlon は、simplexml オブジェクトのフィールド名としてクエリ文字列に表示されます。

クエリ文字列を出力しました。3 番目、4 番目、5 番目、6 番目の値を見てください。

insert into *database.table* (mwayname, sectionname, startlat, startlon,   endlat,endlon,avgspd,avgocc,totvol,seclength,sectime)VALUES ('AKL-SH1-NB-RNM' , '1-NB  PAPAKURA OFF to PAPAKURA ON' , '->latitude', '->longitude' , '->latitude' , '->longitude' ,'98.7012505914656' , '3.0' , '12.0' , '0.309545' , '0.18817086803564703')

simplexml-> をテキストとしてクエリに送信していますが、他の値、数値も影響を受けませんか?? クエリコンストラクターがループ内にあるからではありませんか?

$xml = new SimpleXMLElement($response);

foreach($xml->return as $return)
{ 
echo '**********************',$return->name.'*****<br>';
echo '**********************',$return->reference.'*****<br>';

foreach($return->segments as $segments)
{
echo $return->name.'<br>';
echo $return->reference.'<br>';

echo $segments->carriagewaySegmentId.' ID <br>';
echo 'section name ',$segments->sectionName.'<br>';

echo 'start lat ',$segments->startLocation->latitude.'<br>';
echo 'start lng ',$segments->startLocation->longitude.' <br>';

echo 'end lat ',$segments->endLocation->latitude.'<br>';
echo 'end long ',$segments->endLocation->longitude.'<br>';

echo 'avg speed = ',$segments->averageSpeed. ' kmh avg<br>';
echo $segments->averageOccupancy. ' % of rd occupied<br>';
echo $segments->totalVolume. ' traffic volume<br>';
echo $segments->sectionLength. ' km<br>';
echo $segments->sectionTime. ' minutes<br>';
echo'<br>';
//send to mysql
$query = "insert into trafficstats.master (mwayname, sectionname, startlat, startlon,     endlat,endlon,avgspd,avgocc,totvol,seclength,sectime)VALUES ('$return->reference' ,   '$segments->sectionName' , '$segments->startLocation->latitude', '$segments->startLocation->longitude' ,  '$segments->endLocation->latitude' , '$segments->endLocation->longitude' ,'$segments- >averageSpeed' , '$segments-

>averageOccupancy' , '$segments->totalVolume' , '$segments->sectionLength' ,  '$segments->sectionTime')";
echo $query;
mysql_query($query);
}
}
?>
4

2 に答える 2

2

このクエリを試してください

$query = "insert into trafficstats.master (mwayname, sectionname, startlat, startlon,     endlat,endlon,avgspd,avgocc,totvol,seclength,sectime)
VALUES ('".$return->reference."' ,   '".$segments->sectionName."' , 
'".$segments->startLocation->latitude."', '".$segments->startLocation->longitude."' ,  
'".$segments->endLocation->latitude."' , '".$segments->endLocation->longitude."' ,
'".$segments- >averageSpeed."' , '".$segments->averageOccupancy."' , 
'".$segments->totalVolume."' , '".$segments->sectionLength."' ,  
'".$segments->sectionTime."')";
于 2013-03-28T06:54:22.900 に答える
1

ここで問題を説明すると、PHP が のような二重引用符で囲まれた文字列に遭遇する"something $foo->bar->baz something"$foo->bar$foo->bar->baz.

解決策は、(他の人が指摘したように)複数の部分から文字列を連結する'something ' . $foo->bar->baz . ' something'か( )、変数を中括弧で囲んで、PHPがすべて1つの変数であることを認識できるようにすることです("something {$foo->bar->baz} something")。

この構文の詳細については、PHP マニュアルの関連セクションを参照してください。

于 2013-03-28T20:13:45.900 に答える