在Oracle查询中如何转义双引号?

8

我在Oracle表中有一些文本字段,其中包含双引号。如何在选择查询中转义它们,以便我可以在PHP中使用?


1
字段名称有引号还是字段值有引号? - Powerlord
在查询中,您不需要转义所选文本。只需像其他字段一样选择它并在PHP中进行操作即可。例如:str_replace('"', '"', $field); 或类似的操作。 通常,在将文本插入数据库表之前,您需要对其进行转义处理。 - ThatsMe
4个回答

3

如果你正在尝试这样做,很可能是在处理 SQL 注入漏洞。请搜索一下并思考一下你正在做什么。


2

你应该能够完成

SELECT REPLACE(your_column, '"', '\"') AS your_escaped_column
FROM your_table;

响应不佳。如果表格包含100000000行,则会在所有行中搜索并替换该值。 - Fernando.
@Fernando。恐怕我没有完全理解你的评论。我并不希望这个查询用来返回所有的100,000,000行,而是要通过_另一个_列进行过滤。在这种形式下,转义引号可能是不必要的(请参见其他评论/答案),但我不认为它在查询中比PHP慢。 - Peter Lang

0

嗯...你可以像选择其他字段一样选择它们。但是当你将东西放入数据库时,你需要对它们进行转义。

这取决于你使用的数据库抽象层或驱动程序的不同机制。

对于驱动程序,我建议使用PDO。这样,无论你使用哪种数据库,为输入转义字段总是类似于以下内容:

// Assuming that $dbh is a valid PDO object, like this one:
// $dbh = new PDO('oci:dbname=//hostname:1521/scott', 'scott', 'tiger');
// That's 'oci:dbname=//hostname:port-number/database', username, password

$sql = "SELECT * FROM myTable WHERE name = ':myName'";
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':myName' => "Ed O'Neil"));

0

你试过这样写吗:"\""


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接