gpt4 book ai didi

php - 如何使用 PDO 和数组仅更新表格单元格(如果为空)

转载 作者:行者123 更新时间:2023-11-29 18:42:44 26 4
gpt4 key购买 nike

我似乎无法找出仅更新包含空值的单元格的方法。利用此语句(初始数据库更新后)将初始数据模拟到相邻单元格中,以便在数据更改时它具有基础引用。

只需要找到一种方法,只允许这些单元格更新一次。我已将它们设置为 NULL 作为默认值。每天都会将不同的数据集收集到具有唯一时间/日期 ID 的同一个表中。

$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.

编辑:添加了一个示例,可以更好地说明内容、方式和原因。

最佳答案

您的数组声明中存在语法错误。另外,我知道这是挑剔的,$dbh->prepare()的结果是一个准备好的语句,而不是SQL,所以也许重命名你的变量,这样就不会让你自己感到困惑或将来的其他开发者:

$stmt = $dbh->prepare("REPLACE INTO `action-data` (
`angle_start`,
`speed_start`,
`temp_start`,
`direction_start`,
`charge_start`
) VALUES (?,?,?,?,?)");
$stmt->execute(array(
$angle_start_db,
$speed_start_db,
$temp_start_db,
$direction_start_db,
$charge_start_db
));

如果仍然不起作用,我们可能需要查看您的 $dbh 声明以查看其配置是否正确。

关于php - 如何使用 PDO 和数组仅更新表格单元格(如果为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44839246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com