Format input so it can be safely used as a literal in a query. Literals are values such as strings or numbers which get utilized in places like WHERE, SET and VALUES clauses of SQL statements.
The format returned depends on the PHP data type of input and the database type being used.
Parameter
mixed $in
the input to be quoted
Return value
mixed - the formatted data
The format of the results depends on the input's PHP type:
input -> returns
NULL -> the string NULL
integer or float -> the unquoted number
boolean -> output depends on the driver in use
Most drivers return integers: 1 if true or 0 if false. Some return strings: TRUE if true or FALSE if false. Finally one returns strings: T if true or F if false. Here is a list of each DBMS, the values returned and the suggested column type:
dbase -> T/F (Logical)
fbase -> TRUE/FALSE (BOOLEAN)
ibase -> 1/0 (SMALLINT) [1]
ifx -> 1/0 (SMALLINT) [1]
msql -> 1/0 (INTEGER)
mssql -> 1/0 (BIT)
mysql -> 1/0 (TINYINT(1))
mysqli -> 1/0 (TINYINT(1))
oci8 -> 1/0 (NUMBER(1))
odbc -> 1/0 (SMALLINT) [1]
pgsql -> TRUE/FALSE (BOOLEAN)
sqlite -> 1/0 (INTEGER)
sybase -> 1/0 (TINYINT(1))
[1] Accommodate the lowest common denominator because not all versions of have BOOLEAN.
other (including strings and numeric strings) -> the data with single quotes escaped by preceeding single quotes, backslashes are escaped by preceeding backslashes, then the whole string is encapsulated between single quotes
<?php // Once you have a valid DB object named $db... $name = "all's well"; $active = true; $sql = 'SELECT * FROM clients WHERE name = ' . $db->quoteSmart($name) . ' AND active = ' . $db->quoteSmart($active); $result =& $db->query($sql); ?>
Deliver First Class Web Sites: 101 Essential Checklists Want to learn how to make your web sites usable and accessible? Want to ensure that your sites meet current best practice, without spending hours trawling through incomprehensible specifications and recommendations from dozens of different books, research papers, and web sites? Want to make sure that the sites you build are "right the first time," requiring no costly redevelopments?