summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--adodb.inc.php7
-rw-r--r--tests/test-autoexecute-update.php28
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";