php-MysqlおよびOracleデータベースに一重引用符で文字列を挿入する方法は?
一重引用符で囲まれた値(商品名:xyz80'など)を挿入する際に問題が発生します。では、どうすればそのようなデータを mysqlとoracleデータベースに挿入できますか。二重引用符を使用すると、正常に機能しています。例:xyz90 "
私のスクリプト:
$query2 = "SELECT sfoi.name, sfoi.sku, sfoi.qty_ordered
FROM sales_flat_order sfo
JOIN sales_flat_order_item sfoi
ON sfoi.order_id = sfo.entity_id
WHERE sfo.increment_id = 100000473";
$result_query2 = mysql_query($query2);
while($row = mysql_fetch_array($result_query2))
{
$row["name"] = mysql_real_escape_string($row["name"]);
// $row["name"] = html_entity_decode($row["name"]);
$result_str_product .= "('". $row["name"] . "',". "'" . $row["sku"] . "'," . "'" . $row["qty_ordered"]),";
}
mysql_real_escape_string()とhtml_entity_decode()の両方を使用しようとしましたが、それでもエラーが発生します。 ここで、$ row [name]は、xyz80'、pqr75'などの値をフェッチしています。PHPを介してこれらの値を挿入しているため、エラーが発生している場所を正確に取得できません。
Oracle dbでも同様の問題が発生しています。 Oracleでは、これを試しました:最後に ''
を使用して"'". $row["name"] . "'',"
。
Oracle dataabseに特殊文字を挿入するにはどうすればよいですか?
答え :
解決策:
1つの'
を2つの'' 、クエリを作成する前:
while($ row = mysql_fetch_array($ result_query2)){
$ n = mysql_real_escape_string($ row ["name"]);
$ s = mysql_real_escape_string($ row ["sku"]);
$ q = mysql_real_escape_string($ row ["sku"]);
// $ n = html_entity_decode($ row ["qty_ordered"]);
$result_str_product。="(' $ n '、' $ s '、' $ q ' )、 ";
}
// Remember_to_remove_final_stray_comma($ result_str_product);
print($ result_str_product); //作成された'を確認するためだけに
答え :
解決策:
Oracleの場合、クエリを実行するときに一重引用符を2つの一重引用符に置き換えることができます。
$query2 = "SELECT REPLACE(sfoi.name,'''','''''') name, sfoi.sku, sfoi.qty_ordered
FROM sales_flat_order sfo JOIN sales_flat_order_item sfoi
ON sfoi.order_id = sfo.entity_id
WHERE sfo.increment_id = 100000473";
その後、残りのコードはそのまま機能するはずです。
Oracleでは、2つの連続する一重引用符は、文字列リテラル内の一重引用符を表します。
答え :
解決策:
Oracleには、文字列をエスケープするために使用されるq関数があります。 http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_sqltypes.htm#sthref373
select q'my 'quoted text' ' from dual
このソリューションは、ネストされた引用符をたくさん持つ必要がないので便利です
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。