Expose MySQL affected row counts
This commit is contained in:
@@ -5,4 +5,5 @@ mysql_disconnect
|
||||
mysql_error
|
||||
mysql_escape
|
||||
mysql_insert_id
|
||||
mysql_affected_rows
|
||||
mysql_query
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
:sig
|
||||
u32 mysql_affected_rows(MySQL* m)
|
||||
|
||||
:params
|
||||
m : pointer to an active MySQL connection
|
||||
return value : number of rows changed by the most recent statement
|
||||
|
||||
:see
|
||||
>mysql
|
||||
mysql_query
|
||||
mysql_insert_id
|
||||
|
||||
:content
|
||||
Returns the number of rows changed by the most recent insert, update, or delete on the connection. A successful statement that returns rows, a rejected query, or a null connection returns `0` rather than retaining an earlier statement's count.
|
||||
|
||||
:example
|
||||
MySQL* db = mysql_connect();
|
||||
if(db != 0)
|
||||
{
|
||||
mysql_query(db, "update users set active=1 where active=0");
|
||||
print("rows updated: ", mysql_affected_rows(db), "\n");
|
||||
mysql_disconnect(db);
|
||||
}
|
||||
else print("(requires a reachable MySQL server)\n");
|
||||
@@ -9,6 +9,7 @@ return value : a list of rows returned from executing the query
|
||||
|
||||
:see
|
||||
>mysql
|
||||
mysql_affected_rows
|
||||
|
||||
:content
|
||||
Executes a MySQL query and returns the resulting data, if any.
|
||||
@@ -17,6 +18,8 @@ Executes a MySQL query and returns the resulting data, if any.
|
||||
|
||||
The result is returned as a `DValue`, which makes it easy to iterate through rows and read fields with the usual `DValue` accessors.
|
||||
|
||||
After an insert, update, or delete, use `mysql_affected_rows()` to inspect how many rows changed.
|
||||
|
||||
:example
|
||||
MySQL* db = mysql_connect();
|
||||
if(db != 0)
|
||||
|
||||
+14
-1
@@ -131,8 +131,21 @@ RENDER(Request& context)
|
||||
(dbs.find("information_schema") != String::npos || dbs.find("mysql") != String::npos) ? "pass" : "fail",
|
||||
dbs.substr(0, dbs.length() > 220 ? 220 : dbs.length())
|
||||
);
|
||||
mysql.query("USE mysql");
|
||||
mysql.query("CREATE TEMPORARY TABLE uce_affected_rows_test (id INT PRIMARY KEY, value INT NOT NULL)");
|
||||
mysql.query("INSERT INTO uce_affected_rows_test VALUES (1,10),(2,20)");
|
||||
u32 inserted = mysql_affected_rows(&mysql);
|
||||
mysql.query("UPDATE uce_affected_rows_test SET value=value+1 WHERE id=1");
|
||||
u32 updated = mysql_affected_rows(&mysql);
|
||||
mysql.query("SELECT * FROM uce_affected_rows_test");
|
||||
u32 selected = mysql_affected_rows(&mysql);
|
||||
mark(
|
||||
"mysql_affected_rows()",
|
||||
inserted == 2 && updated == 1 && selected == 0 ? "pass" : "fail",
|
||||
"inserted=" + std::to_string((u64)inserted) + " updated=" + std::to_string((u64)updated) + " selected=" + std::to_string((u64)selected)
|
||||
);
|
||||
}
|
||||
|
||||
site_tests_summary(passed, failed, skipped, "Memcache or MySQL checks are allowed to skip cleanly when the corresponding service is not available on the development host.");
|
||||
site_tests_page_end();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user