0

これは、データベースに値を送信していないが、エラーを報告していない最新のコードです。

 foreach($library->time_report as $project){
            mysql_query("INSERT INTO instancetable (project_ID,          project_status, client_ID, project_start_time, project_end_time, project_total_time, employee_ID, employee_name, date_created, date_modified, created_by, client_name, priority, organization, number_of_required_types) 
            VALUES ('{$project->project_ID}',{$project->project_status}, '{$project->client_ID}', {$project->project_start_time}, '{$project->project_end_time}', '{$project->project_total_time}','{$project->employee_ID}', {$project->employee_name}, {$project->date_created}, {$project->date_modified}, {$project->created_by}, {$project->client_name}, {$project->priority}, {$project->organization}, {$project->number_of_required_types}");

}

XML ファイルを mysql にアップロードする必要があります。正常にアップロードされていると表示されますが、テーブルに値 0 が表示されるだけです。私のコードは次のとおりです。

<?php

     echo "starting <br><br>";
     //mysql connection
$con2 = mysql_connect("localhost","test","test");
if (!$con2)  {  die('Could not connect: ' . mysql_error());  }
$selectdb = mysql_select_db("test", $con2);
if (!$selectdb)  { die('Database not used: ; ' . mysql_error());  }

echo "connected to DB<br/><br/>";

 //simplexml load xml file   
$library =  simplexml_load_file('http://localhost/instance.xml');

echo "xml loaded<br/><br/>";

//loop through parsed xmlfeed and print output      

foreach ($library->message as $message) {                  
printf("project_ID: %s\n", $project_ID->project_ID);                  
}

echo "xml parsed<br/><br/>";

//insert into databse                     
mysql_query("INSERT INTO instancetable (project_ID)
VALUES ('project_ID')")
or die(mysql_error());

echo "inserted into mysql<br/><br/>";

//show updated records            
printf ("Records inserted: %d\n", mysql_affected_rows());  



//close connection 
mysql_close($con2);
echo " <br /> Finished "
?>

だから、これは私が得る出力です:

starting 

connected to DB

xml loaded

xml parsed

inserted into mysql

Records inserted: 1 
Finished

XML ファイル:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<project>
<time_report>
    <project_ID>4</project_ID>
    <project_status>Closed</project_status>
    <client_ID>6001</client_ID>
    <time_record>
        <project_start_time>13:03:19.000</project_start_time>
        <project_end_time>13:14:26.000</project_end_time>
        <project_total_time>0.0104166666666667</project_total_time>
    </time_record>
    <employee_ID>10001</employee_ID>
    <employee_name>Mary Beth</employee_name>
    <date_created>2009-07-02</date_created>
    <date_modified>2009-11-24</date_modified>
    <created_by>Mary Beth</created_by>
    <client_name>BlackRock Funds</client_name>
    <priority/>
    <organization/>
    <number_of_required_types>9999999999</number_of_required_types>
</time_report>

XML ファイルを上に示します。これははるかに大きいため、エントリを 1 つだけ取り出しました。

4

2 に答える 2

0

$project_IDが設定されていません。foreachループはおそらく実行されますが、$ project_IDが定義されていないため、何も出力されません。

各プロジェクトIDを挿入して印刷する場合は、foreachループ内に挿入クエリが必要です。

foreach($library->time_report as $project){
  mysql_query("INSERT INTO instancetable (project_ID) 
    VALUES ('{$project->project_ID}')");

  printf("project_ID: %s\n", $project->project_ID);
}

ここでは、project_IDが文字列として挿入されていることに注意してください。データベースフィールドが整数の場合は、を囲む一重引用符を削除する必要があります$project->project_ID

于 2012-12-07T21:18:25.243 に答える
0

I don't know if you only want to insert the last project_ID or all in that file. Try this to insert every project_ID in your XML file.

Try this:

foreach ($library->message as $message) { 
    mysql_query("INSERT INTO instancetable (project_ID) VALUES ('" . $message->time_report->project_ID . "')");
}

And please note that all mysql_* functions are marked as deprecated. You should learn about PDO.

于 2012-12-07T20:56:00.223 に答える