DB_common::quoteSmart()
DB_common::quoteSmart() – リテラルとして安全に使用できるように入力内容を整形する
Synopsis
mixed quoteSmart (
mixed $in
)
Description
入力内容を整形し、クエリ内でリテラルとして安全に使用できるようにします。
リテラルとは文字列や数値のことで、SQL 文の
WHERE、SET および
VALUES 句で使用できるものです。
返される整形結果は、入力の PHP データ型
および使用しているデータベースの型に依存します。
Return value
mixed - 整形された結果が返されます。
整形結果は、入力の PHP 型に依存します。
-
入力の型 -> 返り値
-
NULL -> 文字列 NULL。
-
integer あるいは float -> クォートされない数値。
-
boolean -> 使用しているドライバに依存します。
ほとんどのドライバでは、true の場合に
1、false の場合に
0 を返します。
中には、true の場合に文字列の TRUE、
false の場合に文字列の FALSE
を返すものもあります。また、
true の場合に文字列の T、
false の場合に文字列の F
を返すものもあります。以下に、各 DBMS についての返り値およびカラム型を
示します。
-
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
(TINYINT)
-
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] BOOLEAN に対応していないバージョンが存在するため、
より無難なほうに対応させています。
-
その他 (文字列や、数値形式の文字列を含む) ->
DBMS 固有の方法でエスケープされた文字列
(
escapeSimple() を使用します)
の前後を単一引用符で囲んだもの。
Note
This function can not be called
statically.
リリース 1.6.0 以降で使用可能です。
Example
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$name = "all's well";
$active = true;
$sql = 'SELECT * FROM clients WHERE name = '
. $db->quoteSmart($name)
. ' AND active = '
. $db->quoteSmart($active);
$res =& $db->query($sql);
?>