【发布时间】:2012-03-26 16:56:18
【问题描述】:
我在插入单引号时遇到问题(比如产品名称: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 数据库类似的问题。在 Oracle 中,我尝试了这个:"'". $row["name"] . "''," 最后使用 ''。
如何在 Oracle 数据库中插入特殊字符?
【问题讨论】:
-
mysql_real_escape_string应该可以解决问题。$result_str_product的其余部分在哪里设置和使用?您收到的确切错误消息是什么? -
$result_str_product 是您正在构建插入语句的字符串吗?如果是这样,您真的应该使用占位符(又名绑定变量)准备查询。这将解决报价问题,对于 Oracle 而言,它也会更快。
标签: php mysql sql oracle escaping