diff options
| -rw-r--r-- | adodb.inc.php | 7 | ||||
| -rw-r--r-- | tests/test-autoexecute-update.php | 28 |
2 files changed, 32 insertions, 3 deletions
diff --git a/adodb.inc.php b/adodb.inc.php index f995eeb0..6726d042 100644 --- a/adodb.inc.php +++ b/adodb.inc.php @@ -2665,15 +2665,16 @@ if (!defined('_ADODB_LAYER')) { } $sql = "SELECT * FROM $table"; + if (!empty($where)) { + $sql .= " WHERE $where"; + } + $rs = $this->SelectLimit($sql, 1); if (!$rs) { return false; // table does not exist } $rs->tableName = $table; - if (!empty($where)) { - $sql .= " WHERE $where"; - } $rs->sql = $sql; switch($mode) { diff --git a/tests/test-autoexecute-update.php b/tests/test-autoexecute-update.php new file mode 100644 index 00000000..4ac8b619 --- /dev/null +++ b/tests/test-autoexecute-update.php @@ -0,0 +1,28 @@ +<?php + +require __DIR__ . "/../adodb.inc.php"; + +$db = NewADOConnection("sqlite3"); +$db->Connect(":memory:"); + +$db->Execute("CREATE TABLE users(id primary key, name, year_of_birth)"); +$db->Execute("INSERT INTO users VALUES (1, 'John', 2000)"); +$db->Execute("INSERT INTO users VALUES (2, 'Jane', 1981)"); + +$new_value = 2000; + +$db->autoExecute( + table: "users", + fields_values: ["year_of_birth" => $new_value], + mode: "UPDATE", + where: "id = 2", + forceUpdate: false, +); + +$updated_value = $db->GetOne("SELECT year_of_birth FROM users WHERE id = 2"); + +if ($updated_value != $new_value) { + die("ERROR: updated_value $updated_value != new_value $new_value"); +} + +echo "Finished.\n"; |
