2013-02-17 19 views
1

美好的一天。为什么不选择用引号选择?

我行数据库:

database

当我做第一选择:

SELECT * FROM `table` WHERE `name` Like '%Коляска \"Balmoral\" Silver Cross%' 

我得到空(NUM行= 0)... 但是,如果我做第二选择:

SELECT * FROM `products` WHERE `name` Like '%Balmoral%' 

我得到了num rows = 1。

为什么不首先选择工作,以及如何正确选择?

斜线在数据库中选择becose我用mysql_real_escape_string当我插入新行并使用选择

回答

1

使用此:

SELECT * FROM `titles` WHERE `title` LIKE '%Коляска \\\\"Balmoral\\\\%" Silver Cross' 

说明:\必须用\对SQL进行转义,但对于PHP,我们需要额外\逃脱也。

或者干脆:

SELECT * FROM `titles` WHERE `title` = 'Коляска \\"Balmoral\\" Silver Cross' 

不过,我不知道为什么!

+1

''在这个操作中'不好主意。 需要使用全文。 例 'SELECT *,MATCH(名称)AGAINST ( 'Коляска\ “巴尔莫勒尔\” 交银')AS得分 FROM产品WHERE MATCH(名)反对 ( 'Коляска\ “巴尔莫勒尔\” 银十字' );' – 2013-02-17 23:34:37

2

反斜杠是一个转义字符。如果你想寻找它,你需要逃避它。 (换句话说,你需要躲避转义字符。):

SELECT * FROM `table` WHERE `name` Like '%Коляска \\"Balmoral\\" Silver Cross% 
+0

'SELECT * FROM'products' WHERE'name' LIKE '%Коляска\\ “巴尔莫勒尔\\” 银色十字架%''我得到空行... – 2013-02-17 20:49:32

+0

@John_Conde它不是工作...... – 2013-02-17 20:59:37

0

在此操作中不太好的主意。需要使用全文。

SELECT *, MATCH (name) AGAINST 
    ('Коляска \"Balmoral\" Silver Cross') AS score 
    FROM products WHERE MATCH (name) AGAINST 
    ('Коляска \"Balmoral\" Silver Cross');