1

エラーが発生するクエリがあります:

コードは次のとおりです。

$prefix = $data->sheets[0]['cells'][$row][2];
$fiyat = $data->sheets[0]['cells'][$row][3];
$increment = $data->sheets[0]['cells'][$row][4];
$tarih = $data->sheets[0]['cells'][$row][5];
$tarih = explode('.',$tarih);
$effective_date = $tarih[2] . "-" . $tarih[1] . "-" . $tarih[0];

すべての変数は正しい値 (および変数の型) を返します。

$query_insert_to_rates = "INSERT INTO rates VALUES (nextval('routes_seq'), '$prefix', '$i_tariff', '$fiyat_orj', '$fiyat_orj', '$increment', '$increment', '$forbidden', 't', '0', '0', '$increment', '$increment', NULL, '$eff_date_ins', NULL);";

$result_insert_to_rates = pg_query($query_insert_to_rates);

INSERT INTO rates VALUES (nextval('routes_seq'), '21321', '8', '0.0470', '0.0470', '1', '1', 't', 't', '0', '0', '1', '1', NULL, '2012-06-01 00:00:00.000001+02', NULL);

警告: pg_query() [function.pg-query]: クエリが失敗しました: エラー: 文字 50 インチの "'2" またはその近くに、終了していない引用符付き文字列があります.....

PHP 内でクエリを実行すると、上記のエラーが発生します。私の PHP バージョンは 5.3.10 です。そしてマシンは Centos 5 (VPS) です。

ただし、Navicat(DBに接続)を介してクエリを実行すると、エラーは発生せず、クエリは完全に実行されました。

どんな助けでも大歓迎です。

4

1 に答える 1

2

これはひどいコードです:安全ではなく、安全ではありません。このパターンは絶対に使用しないでください

$SQL = "INSERT ... ('$var1', '$var2')

代わりに、PDOパラメーター化クエリまたはpg_escape_string関数を使用してください

pg_escape_string

于 2012-06-10T07:02:02.227 に答える