データベース・プレイスホルダー

CS-Cartが行うデータベースへのリクエストは、プレースホルダーを使用して生成されます。

?u

データを更新するための構造持つ配列を格納します:

<?php
$data = array (
    'payment_id' => 5
    );
$order_id = 3;
 
db_query('UPDATE ?:orders SET ?u WHERE order_id = ?i', $data, $order_id);

上記PHPコードは以下のSQLとなります。

UPDATE cscart_orders SET payment_id = '5' WHERE order_id = 3;

?e

データを挿入するための構造持つ配列を格納します:

<?php
$data = array (
    'payment_id' => 5,
    'order_id' => 3
);
 
db_query('INSERT INTO ?:orders ?e', $data);

上記PHPコードは以下のSQLとなります。

INSERT INTO cscart_orders (payment_id, order_id) VALUES ('5', '3');

?i

文字列や数値を受け取り、整数に変換します

<?php
$order_id = 4;
db_query('SELECT * FROM ?:orders WHERE order_id = ?i', $order_id);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_orders WHERE order_id = 4;

?s

文字列や数値を(スラッシュを追加して)文字列に変換します

<?php
$order_id = 'adasd';
db_query('SELECT * FROM ?:orders WHERE order_id = ?s', $order_id);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_orders WHERE order_id = 'foo';

?l

受け取ったデータをLIKEオペレーターに置換するために文字列に変換します(ダブルバックスラッシュに変換されスラッシュが追加されます)

<?php
$piece = '%black\white%';
db_query('SELECT * FROM ?:product_descriptions WHERE product LIKE ?l', $piece);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_product_descriptions WHERE product LIKE '%black\\\\white%';

?d

データをデシマル(分数)に変換する

<?php
$order_id = '123.345345';
db_query('SELECT * FROM ?:orders WHERE order_id = ?d', $order_id);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_orders WHERE order_id = '123.35';

?a

prepares data to be used in the structure IN () as a set of strings, receives a string, number, array:
文字列や数値、配列をIN ()で使えるデータに変換します

<?php
$order_id = '123';
db_query('SELECT * FROM ?:orders WHERE order_id IN (?a)', $order_id);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_orders WHERE order_id IN ('123');

?n

文字列や数値、配列をIN()で使えるデータに変換します

<?php
$order_id = '123.45';
db_query('SELECT * FROM ?:orders WHERE order_id IN (?n)', $order_id);

?p

準備された値の挿入:

<?php
$order_id = 'order_id = 4';
db_query('SELECT * FROM ?:orders WHERE ?p', $order_id);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_orders WHERE order_id = 4;

?w

WHERE句で使えるデータを格納します

<?php
$data = array (
    'payment_id' => 5,
    'order_id' => 3
);
 
db_query('SELECT * FROM ?:orders WHERE ?w', $data);

上記PHPコードは以下のSQLとなります。

SELECT * cscart_orders WHERE payment_id = '5' AND order_id = '3';

Operators
?w プレースホルダーは次のオペレーターをサポートしています: =, !=, >, <, <=, >=, <>, LIKE, NOT LIKE, IN, NOT IN, NULL

配列の例

<?php
$data = array (
    field => value,
    array(field, operator, value)
);
  • field テーブルのフィールド名
  • value 値の条件
  • operator 条件のオペレーター

?f

変数の値が有効なフィールド名かチェックします

<?php
$data = 'payment@id';
 
db_query('SELECT * FROM ?:orders WHERE ?f = 5', $data);

上記PHPコードは以下のSQLとなります。

SELECT * FROM cscart_orders WHERE  = 5;

?m

マルチインサートに対応する配列を格納します。

<?php
$data = array(
    array(
        'payment_id' => 5,
        'order_id' => 3
    ),
    array(
        'payment_id' => 5,
        'order_id' => 4
    ),
);
 
db_query('INSERT INTO ?:orders ?m', $data);

上記PHPコードは以下のSQLとなります。

INSERT INTO cscart_orders (payment_id, order_id) VALUES ('5', '3'),('5', '4');