Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mysqlnd_qc_set_is_select(3) [php man page]

MYSQLND_QC_SET_IS_SELECT(3)						 1					       MYSQLND_QC_SET_IS_SELECT(3)

mysqlnd_qc_set_is_select - Installs a callback which decides whether a statement is cached

SYNOPSIS
mixed mysqlnd_qc_set_is_select (string $callback) DESCRIPTION
Installs a callback which decides whether a statement is cached. There are several ways of hinting PELC/mysqlnd_qc to cache a query. By default, PECL/mysqlnd_qc attempts to cache a if caching of all statements is enabled or the query string begins with a certain SQL hint. The plugin internally calls a function named is_select() to find out. This internal function can be replaced with a user-defined callback. Then, the user-defined callback is responsible to decide whether the plugin attempts to cache a statement. Because the internal function is replaced with the callback, the callback gains full control. The callback is free to ignore the configuration setting mysqlnd_qc.cache_by_default and SQL hints. The callback is invoked for every statement inspected by the plugin. It is given the statements string as a parameter. The callback returns FALSE if the statement shall not be cached. It returns TRUE to make the plugin attempt to cache the statements result set, if any. A so-created cache entry is given the default TTL set with the PHP configuration directive mysqlnd_qc.ttl. If a different TTL shall be used, the callback returns a numeric value to be used as the TTL. The internal is_select function is part of the internal cache storage handler interface. Thus, a user-defined storage handler offers the same capabilities. PARAMETERS
This function has no parameters. RETURN VALUES
Returns TRUE on success or FALSE on failure. EXAMPLES
Example #1 mysqlnd_qc_set_is_select(3) example <?php /* callback which decides if query is cached */ function is_select($query) { static $patterns = array( /* true - use default from mysqlnd_qc.ttl */ "@SELECTs+.*s+FROMs+test@ismU" => true, /* 3 - use TTL = 3 seconds */ "@SELECTs+.*s+FROMs+news@ismU" => 3 ); /* check if query does match pattern */ foreach ($patterns as $pattern => $ttl) { if (preg_match($pattern, $query)) { printf("is_select(%45s): cache ", $query); return $ttl; } } printf("is_select(%45s): do not cache ", $query); return false; } mysqlnd_qc_set_is_select("is_select"); /* Connect, create and populate test table */ $mysqli = new mysqli("host", "user", "password", "schema"); $mysqli->query("DROP TABLE IF EXISTS test"); $mysqli->query("CREATE TABLE test(id INT)"); $mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)"); /* cache put */ $mysqli->query("SELECT id FROM test WHERE id = 1"); /* cache hit */ $mysqli->query("SELECT id FROM test WHERE id = 1"); /* cache put */ $mysqli->query("SELECT * FROM test"); ?> The above examples will output: is_select( DROP TABLE IF EXISTS test): do not cache is_select( CREATE TABLE test(id INT)): do not cache is_select( INSERT INTO test(id) VALUES (1), (2), (3)): do not cache is_select( SELECT id FROM test WHERE id = 1): cache is_select( SELECT id FROM test WHERE id = 1): cache is_select( SELECT * FROM test): cache SEE ALSO
Runtime configuration, mysqlnd_qc.ttl, mysqlnd_qc.cache_by_default, mysqlnd_qc_set_user_handlers(3). PHP Documentation Group MYSQLND_QC_SET_IS_SELECT(3)

Check Out this Related Man Page

MYSQLI_AFFECTED_ROWS(3) 						 1						   MYSQLI_AFFECTED_ROWS(3)

mysqli::$affected_rows - Gets the number of affected rows in a previous MySQL operation

       Object oriented style

SYNOPSIS
int$mysqli->affected_rows () DESCRIPTION
Procedural style int mysqli_affected_rows (mysqli $link) Returns the number of rows affected by the last INSERT, UPDATE, REPLACE or DELETE query. For SELECT statements mysqli_affected_rows(3) works like mysqli_num_rows(3). PARAMETERS
o $ link -Procedural style only: A link identifier returned by mysqli_connect(3) or mysqli_init(3) RETURN VALUES
An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records were updated for an UPDATE statement, no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the query returned an error. Note If the number of affected rows is greater than the maximum integer value( PHP_INT_MAX ), the number of affected rows will be returned as a string. EXAMPLES
Example #1 $mysqli->affected_rows example Object oriented style <?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s ", mysqli_connect_error()); exit(); } /* Insert rows */ $mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage"); printf("Affected rows (INSERT): %d ", $mysqli->affected_rows); $mysqli->query("ALTER TABLE Language ADD Status int default 0"); /* update rows */ $mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50"); printf("Affected rows (UPDATE): %d ", $mysqli->affected_rows); /* delete rows */ $mysqli->query("DELETE FROM Language WHERE Percentage < 50"); printf("Affected rows (DELETE): %d ", $mysqli->affected_rows); /* select all rows */ $result = $mysqli->query("SELECT CountryCode FROM Language"); printf("Affected rows (SELECT): %d ", $mysqli->affected_rows); $result->close(); /* Delete table Language */ $mysqli->query("DROP TABLE Language"); /* close connection */ $mysqli->close(); ?> Procedural style <?php $link = mysqli_connect("localhost", "my_user", "my_password", "world"); if (!$link) { printf("Can't connect to localhost. Error: %s ", mysqli_connect_error()); exit(); } /* Insert rows */ mysqli_query($link, "CREATE TABLE Language SELECT * from CountryLanguage"); printf("Affected rows (INSERT): %d ", mysqli_affected_rows($link)); mysqli_query($link, "ALTER TABLE Language ADD Status int default 0"); /* update rows */ mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50"); printf("Affected rows (UPDATE): %d ", mysqli_affected_rows($link)); /* delete rows */ mysqli_query($link, "DELETE FROM Language WHERE Percentage < 50"); printf("Affected rows (DELETE): %d ", mysqli_affected_rows($link)); /* select all rows */ $result = mysqli_query($link, "SELECT CountryCode FROM Language"); printf("Affected rows (SELECT): %d ", mysqli_affected_rows($link)); mysqli_free_result($result); /* Delete table Language */ mysqli_query($link, "DROP TABLE Language"); /* close connection */ mysqli_close($link); ?> The above examples will output: Affected rows (INSERT): 984 Affected rows (UPDATE): 168 Affected rows (DELETE): 815 Affected rows (SELECT): 169 SEE ALSO
mysqli_num_rows(3), mysqli_info(3). PHP Documentation Group MYSQLI_AFFECTED_ROWS(3)
Man Page