function qsprintf($escaper, $pattern)Phabricator Technical Documentation (Storage)
function qsprintf($escaper, $pattern)
Phabricator Technical Documentation (Storage)
Format an SQL query. This function behaves like sprintf, except that all the normal conversions (like "%s") will be properly escaped, and additional conversions are supported:
%nd, %ns, %nf, %nB "Nullable" versions of %d, %s, %f and %B. Will produce 'NULL' if the argument is a strict null. %=d, %=s, %=f "Nullable Test" versions of %d, %s and %f. If you pass a value, you get "= 3"; if you pass null, you get "IS NULL". For instance, this will work properly if `hatID' is a nullable column and $hat is null. qsprintf($escaper, 'WHERE hatID %=d', $hat); %Ld, %Ls, %Lf, %LB "List" versions of %d, %s, %f and %B. These are appropriate for use in an "IN" clause. For example: qsprintf($escaper, 'WHERE hatID IN (%Ld)', $list_of_hats); %B ("Binary String") Escapes a string for insertion into a pure binary column, ignoring tests for characters outside of the basic multilingual plane. %C, %LC, %LK ("Column", "Key Column") Escapes a column name or a list of column names. The "%LK" variant escapes a list of key column specifications which may look like "column(32)". %K ("Comment") Escapes a comment. %Q, %LA, %LO, %LQ, %LJ ("Query Fragment") Injects a query fragment from a prior call to qsprintf(). The list variants join a list of query fragments with AND, OR, comma, or space. %Z ("Raw Query") Injects a raw, unescaped query fragment. Dangerous! %R ("Database and Table Reference") Behaves like "%T.%T" and prints a full reference to a table including the database. Accepts a AphrontDatabaseTableRefInterface. %P ("Password or Secret") Behaves like "%s", but shows "********" when the query is printed in logs or traces. Accepts a PhutilOpaqueEnvelope. %~ ("Substring") Escapes a substring query for a LIKE (or NOT LIKE) clause. For example: // Find all rows with $search as a substring of `name`. qsprintf($escaper, 'WHERE name LIKE %~', $search); See also %> and %<. %> ("Prefix") Escapes a prefix query for a LIKE clause. For example: // Find all rows where `name` starts with $prefix. qsprintf($escaper, 'WHERE name LIKE %>', $prefix); %< ("Suffix") Escapes a suffix query for a LIKE clause. For example: // Find all rows where `name` ends with $suffix. qsprintf($escaper, 'WHERE name LIKE %<', $suffix); %T ("Table") Escapes a table name. In most cases, you should use "%R" instead.
Parameters
PhutilQsprintfInterface | $escaper | |
$pattern |
Return
wild |