Handle another edge case, where table being handled doesn't have a primary key

This commit is contained in:
git 2025-06-21 18:40:37 +01:00
parent 0224ccd4cb
commit 58540955e6

View File

@ -182,7 +182,8 @@ function runJavascriptCodeTrigger($functionName, $activeTable, $row) {
function updateDatabaseRow($tableName, $originalRow, $newRowValue) { function updateDatabaseRow($tableName, $originalRow, $newRowValue) {
if (empty($originalRow) || empty($newRowValue)) return; if (empty($originalRow) || empty($newRowValue)) return;
$pkColsName = getTblPrimaryKeyColName($tableName); $pkColsName = getTblPrimaryKeyColName($tableName);
$pkColsValues = array_map(fn($cName) => $originalRow[$cName], $pkColsName); if (empty($pkColsName)) {echo redText("ERROR: No PRIMARY KEY foudn for table: $tableName\n"); return;}
$pkColsValues = array_map(fn($cName) => $originalRow[$cName], $pkColsName);
$setStatements = []; $setStatements = [];
foreach ($newRowValue as $k => $v) { foreach ($newRowValue as $k => $v) {
@ -194,12 +195,12 @@ function updateDatabaseRow($tableName, $originalRow, $newRowValue) {
foreach ($pkColsName as $k) { foreach ($pkColsName as $k) {
$val = is_numeric($originalRow[$k]) ? $originalRow[$k] : "'" . $originalRow[$k] . "'"; $val = is_numeric($originalRow[$k]) ? $originalRow[$k] : "'" . $originalRow[$k] . "'";
$whereStatements[] = "$k = $val"; $whereStatements[] = "$k = $val";
} }
$sql_instruction = "UPDATE $tableName SET " . implode(", ", $setStatements) . " WHERE " . implode(" AND ", $whereStatements); $sql_instruction = "UPDATE $tableName SET " . implode(", ", $setStatements) . " WHERE " . implode(" AND ", $whereStatements);
try {sql($sql_instruction);} try {sql($sql_instruction);}
catch (Exception $e) { catch (Exception $e) {
echo "ERROR: while trying $sql_instruction\n\n";print_r($e->getMessage()); echo redText("ERROR: while trying $sql_instruction\n\n");print_r($e->getMessage());
} }
} }