-1

私はPHPがまったく初めてです。CSV を MYSQL データベースにインポートし、Google Maps API を介してデータベースにクエリを実行するための短いプロジェクトでのみ必要です。できれば、ベイビーステップ/リソースをいただければ幸いです。

名前、経度、緯度 (とりわけ) を含むデータベースに接続し、markers テーブルで SELECT * クエリを実行し、結果を繰り返し処理しようとしています。テーブルの各行 (各場所) に対して、行属性を XML 属性として持つ新しい XML ノードを作成し、それを親ノードに追加する必要があります。次に、XML を画面にダンプします。

私はこのコードを使用しています:

<?php  

require("phpsqlajax_dbinfo.php"); 

// Start XML file, create parent node

$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node); 

// Opens a connection to a MySQL server

$connection=mysql_connect (localhost, $username, $password);
if (!$connection) {  die('Not connected : ' . mysql_error());} 

// Set the active MySQL database

$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
} 

// Select all the rows in the markers table

$query = "SELECT * FROM markers WHERE 1";
$result = mysql_query($query);
if (!$result) {  
  die('Invalid query: ' . mysql_error());
} 

header("Content-type: text/xml"); 

// Iterate through the rows, adding XML nodes for each

while ($row = @mysql_fetchAssoc($result)){  
  // ADD TO XML DOCUMENT NODE  
  $node = $dom->createElement("marker");  
  $newnode = $parnode->appendChild($node);   

  $newnode->setAttribute("name", $row['name']);
  $newnode->setAttribute("city", $row['city']);
  $newnode->setAttribute("country", $row['country']);
  $newnode->setAttribute("lat", $row['lat']);
  $newnode->setAttribute("lng", $row['lng']);
  $newnode->setAttribute("skill_1", $row['skill_1']);
  $newnode->setAttribute("skill_2", $row['skill_2']);
  $newnode->setAttribute("skill_3", $row['skill_3']);
  $newnode->setAttribute("interest_1", $row['interest_1']);
  $newnode->setAttribute("interest_2", $row['interest_2']);
  $newnode->setAttribute("interest_3", $row['interest_3']);

} 

echo $dom->saveXML();

?>

私は初歩的なデバッグを試みましたが、1) プログラムがデータベースに正しく接続されていることを確認できました。2) エラー ログが表示されない。3) コメント「 // マーカー テーブル内のすべての行を選択します。」の直後にエラーが発生するように見えます。

XML データが表示されるはずなのに表示​​されず、2 時間も髪を伸ばしていました。何か案は?

==編集== '@' がエラー メッセージを消音していることに気づきませんでした。それを削除すると、このエラーログが私のウェブサイトに表示されます。これから何かアイデアはありますか?

[11-Jul-2013 13:08:00] PHP Warning:  Cannot modify header information - headers already sent by (output started at /home5/dreamio2/public_html/admin/phpsqlajax_dbinfo.php:7) in /home5/dreamio2/public_html/admin/phpsqlajax_genxml.php on line 31
[11-Jul-2013 13:08:00] PHP Warning:  DOMElement::setAttribute() [<a href='domelement.setattribute'>domelement.setattribute</a>]: string is not in UTF-8 in /home5/dreamio2/public_html/admin/phpsqlajax_genxml.php on line 40
[11-Jul-2013 13:08:00] PHP Warning:  DOMElement::setAttribute() [<a href='domelement.setattribute'>domelement.setattribute</a>]: string is not in UTF-8 in /home5/dreamio2/public_html/admin/phpsqlajax_genxml.php on line 40
[11-Jul-2013 13:08:00] PHP Warning:  DOMDocument::saveXML() [<a href='domdocument.savexml'>domdocument.savexml</a>]: output conversion failed due to conv error, bytes 0xE9 0x73 0x20 0x41 in /home5/dreamio2/public_html/admin/phpsqlajax_genxml.php on line 54

==解決策==

Manoj との長い議論の後、2 つのエラーがあったことが判明しました。1) すべての変数を UTF_8 でエンコードする必要がありました (彼の回答を参照)。2) ユーザー名とパスワードを含む私の php ファイルには、close ステートメントの後に TRAILING WHITESPACE があります。ありがとう、マノジ!

4

1 に答える 1