mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merge branch 'PHP-7.4'
* PHP-7.4: Support NO_BACKSLASH_ESCAPES with newer libmysqlclient
This commit is contained in:
commit
9962ad6444
2 changed files with 13 additions and 5 deletions
|
@ -1885,7 +1885,11 @@ PHP_FUNCTION(mysqli_real_query)
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection */
|
#if defined(PDO_USE_MYSQLND) || MYSQL_VERSION_ID < 50707 || defined(MARIADB_BASE_VERSION)
|
||||||
|
# define mysql_real_escape_string_quote(mysql, to, from, length, quote) \
|
||||||
|
mysql_real_escape_string(mysql, to, from, length)
|
||||||
|
#endif
|
||||||
|
|
||||||
PHP_FUNCTION(mysqli_real_escape_string) {
|
PHP_FUNCTION(mysqli_real_escape_string) {
|
||||||
MY_MYSQL *mysql;
|
MY_MYSQL *mysql;
|
||||||
zval *mysql_link = NULL;
|
zval *mysql_link = NULL;
|
||||||
|
@ -1899,12 +1903,11 @@ PHP_FUNCTION(mysqli_real_escape_string) {
|
||||||
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
|
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
|
||||||
|
|
||||||
newstr = zend_string_alloc(2 * escapestr_len, 0);
|
newstr = zend_string_alloc(2 * escapestr_len, 0);
|
||||||
ZSTR_LEN(newstr) = mysql_real_escape_string(mysql->mysql, ZSTR_VAL(newstr), escapestr, escapestr_len);
|
ZSTR_LEN(newstr) = mysql_real_escape_string_quote(mysql->mysql, ZSTR_VAL(newstr), escapestr, escapestr_len, '\'');
|
||||||
newstr = zend_string_truncate(newstr, ZSTR_LEN(newstr), 0);
|
newstr = zend_string_truncate(newstr, ZSTR_LEN(newstr), 0);
|
||||||
|
|
||||||
RETURN_NEW_STR(newstr);
|
RETURN_NEW_STR(newstr);
|
||||||
}
|
}
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
/* {{{ Undo actions from current transaction */
|
/* {{{ Undo actions from current transaction */
|
||||||
PHP_FUNCTION(mysqli_rollback)
|
PHP_FUNCTION(mysqli_rollback)
|
||||||
|
|
|
@ -291,6 +291,11 @@ static char *pdo_mysql_last_insert_id(pdo_dbh_t *dbh, const char *name, size_t *
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
#if defined(PDO_USE_MYSQLND) || MYSQL_VERSION_ID < 50707 || defined(MARIADB_BASE_VERSION)
|
||||||
|
# define mysql_real_escape_string_quote(mysql, to, from, length, quote) \
|
||||||
|
mysql_real_escape_string(mysql, to, from, length)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* {{{ mysql_handle_quoter */
|
/* {{{ mysql_handle_quoter */
|
||||||
static int mysql_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, size_t unquotedlen, char **quoted, size_t *quotedlen, enum pdo_param_type paramtype )
|
static int mysql_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, size_t unquotedlen, char **quoted, size_t *quotedlen, enum pdo_param_type paramtype )
|
||||||
{
|
{
|
||||||
|
@ -313,13 +318,13 @@ static int mysql_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, size_t unqu
|
||||||
*quoted = safe_emalloc(2, unquotedlen, 3 + (use_national_character_set ? 1 : 0));
|
*quoted = safe_emalloc(2, unquotedlen, 3 + (use_national_character_set ? 1 : 0));
|
||||||
|
|
||||||
if (use_national_character_set) {
|
if (use_national_character_set) {
|
||||||
*quotedlen = mysql_real_escape_string(H->server, *quoted + 2, unquoted, unquotedlen);
|
*quotedlen = mysql_real_escape_string_quote(H->server, *quoted + 2, unquoted, unquotedlen, '\'');
|
||||||
(*quoted)[0] = 'N';
|
(*quoted)[0] = 'N';
|
||||||
(*quoted)[1] = '\'';
|
(*quoted)[1] = '\'';
|
||||||
|
|
||||||
++*quotedlen; /* N prefix */
|
++*quotedlen; /* N prefix */
|
||||||
} else {
|
} else {
|
||||||
*quotedlen = mysql_real_escape_string(H->server, *quoted + 1, unquoted, unquotedlen);
|
*quotedlen = mysql_real_escape_string_quote(H->server, *quoted + 1, unquoted, unquotedlen, '\'');
|
||||||
(*quoted)[0] = '\'';
|
(*quoted)[0] = '\'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue