我有一个mysql表,其中有一个列将xml存储为字符串.我需要找到xml列包含6个字符的给定字符串的所有元组.没有其他事情 - 我需要知道的是这个6字符串是否存在.
因此,将文本格式化为xml可能无关紧要.
问题:如何在mysql中搜索?即
SELECT * FROM items WHERE items.xml [contains the text '123456']
有没有办法可以使用LIKE运算符来执行此操作?
在我使用的旧服务器上,我无法使用预准备语句,我目前正在尝试完全转义用户输入,然后再将其发送到MySQL.为此我使用PHP函数mysql_real_escape_string.
由于这个函数没有逃脱MySQL通配符%和_我也用它addcslashes来逃避这些.
当我发送类似的东西:
test_test " '
Run Code Online (Sandbox Code Playgroud)
到数据库然后读回数据库显示:
test\_test " '
Run Code Online (Sandbox Code Playgroud)
看着这个我无法理解为什么_有一个前面的反斜杠但是'和'没有.因为它们全部用\ _确定_'并且"应该都显示相同,即所有都具有转义字符可见或一切都没有可见.
是否会自动筛选转义
有谁能解释一下?
有谁知道哪一个更快:
SELECT * FROM table WHERE column LIKE '%text%';
Run Code Online (Sandbox Code Playgroud)
要么
SELECT * FROM table WHERE LOCATE('text',column)>0;
Run Code Online (Sandbox Code Playgroud) 我使用PHP版本5.3并尝试mysql_real_escape_string($unescaped_string)在我的代码中使用,但我收到错误:
Fatal error: Call to undefined function mysql_real_escape_string()
in /var/www/engine/database.php on line 38
Run Code Online (Sandbox Code Playgroud)
我仍然可以连接到数据库.为什么不可用?
我使用的是PHP 5.3版.