我在插入单引号值(比如产品名称: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中插入特殊字符?
答案 0 :(得分:4)
在撰写查询之前,将一个'
替换为两个''
来准备数据:
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 ); // just to see what's been made
答案 1 :(得分:3)
对于Oracle,您可以在查询时用两个单引号替换单引号:
$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 :(得分:1)
Oracle现在有q函数用于转义字符串 http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_sqltypes.htm#sthref373
select q'my 'quoted text' ' from dual
这个解决方案很好,因为你不必拥有一堆嵌套引号