我似乎無法弄清楚只更新包含空值的單元格的方法。利用這個語句(初始數據庫更新後)將初始數據模仿到相鄰的單元格中,以便數據發生更改時,它具有基準參考。如何使用PDO和數組更新表格單元格
只需要找到一種方法,只允許這些單元更新一次。默認情況下,我將它們設置爲NULL。每天將不同的數據集收集到具有唯一時間/日期標識的同一張表中。
$data = "http://192.168.1.1/data.xml";
$domdoc = new DOMDocument();
$domdoc ->load($data);
$xml = new Domxpath($domdoc);
$unitCount = $xml->query("//data/units")->length;
//get unit id's
$id_array = array();
$id = $xml->query('//data/units//@id');
foreach($id as $item){
array_push($id_array, $item->nodeValue);
};
for ($i=0; $i < $unitCount; $i++){
$id_db = $id_array[$i];
//get unit angle
unset($angle_array);
$angle_array = array();
$angle = $xml->query('//data/units[@id="'$id_array[$i]'"]//@angle');
foreach($angle as $item){
array_push($angle_array, $item->nodeValue);
};
//get unit speed
unset($speed_array);
$speed_array = array();
$speed = $xml->query('//data/units[@id="'$id_array[$i]'"]//@speed');
foreach($speed as $item){
array_push($speed_array, $item->nodeValue);
};
//get unit charge
unset($charge_array);
$charge_array = array();
$charge = $xml->query('//data/units[@id="'$id_array[$i]'"]//@charge');
foreach($charge as $item){
array_push($charge_array, $item->nodeValue);
};
$stmt = $dbh->prepare("REPLACE INTO `action-data` (
`id`,
`angle_start`,
`angle`,
`speed_start`,
`speed`,
`charge_start`,
`charge`
) VALUES (?,?,?,?,?,?)");
$stmt->execute(array(
$id_db,
$angle_db,
$angle_db,
$speed_db,
$speed_db,
$charge_db,
$charge_db
));
}
| id |angle_start|angle|speed_start|speed|charge_start|charge|
-------------------------------------------------------------------
| a4b | 1 | 2 | 0 | 5 | 100 | 31 |
| a4b | 3 | 7 | 0 | 4 | 95 | 29 |
| a4b | 1 | 5 | 0 | 5 | 100 | 4 |
| a4b | 3 | 4 | 0 | 2 | 97 | 36 |
^ ^ ^
\ | /
These values default NULL and
should be set once upon first input
but ignored on future inputs if not == NULL.
編輯:添加了一個更好地說明什麼,如何和爲什麼的例子。
發佈一些示例數據和您的預期結果。 – Blank
謝謝,試圖澄清我想要完成的事情。缺少文檔使我相信我完全使用了錯誤的方法。 – d3c0y