fixes #1068 escape the rank new MySQL 8 reserved word

This time, we do it right before sending the query to MySQL, in the pwg_query
function. This is not optimal, because we add extra processing, useless most
of the time. This solution has less impact on code, and automatically work for
all core and plugins SQL queries.
This commit is contained in:
plegall 2019-08-30 12:11:47 +02:00
parent bf39de788a
commit 5b65fca36c

View file

@ -128,6 +128,15 @@ function pwg_query($query)
{
global $mysqli, $conf, $page, $debug, $t2;
// starting with MySQL 8, rank becomes a reserved keyword, we need to escape it
if (preg_match('/\brank\b/', $query))
{
// first we unescape what's already escaped (to avoid double escaping)
$query = preg_replace('/`rank`/', 'rank', $query);
// then we escape the keyword
$query = preg_replace('/\brank\b/', '`rank`', $query);
}
$start = microtime(true);
($result = $mysqli->query($query)) or my_error($query, $conf['die_on_sql_error']);