我想在php中建立一个简单的搜索功能,搜索SQL数据库中的值。PHP/SQL处理特殊字符(PHP初学者)
我的代码似乎到目前为止工作正常,但我有一些特殊字符的问题。例如,就我所知,我没有得到任何搜索结果,因为没有调用die命令而执行搜索。
$query = mysql_query("SELECT * FROM table WHERE attribute LIKE '%$input%';")
or die("Could not search");
我认为这个问题是$input
是它可以包含的东西像& B A字符串。我如何处理这个?
此外,数据库包含一些法语单词,所以我必须处理所有é,ç,ô
等。如何确保数据库中包含特殊字符的输出(例如hôtel
)通过php正确显示?
UPDATE
花费数小时试图找出是什么问题后,我发现一些迹象表明,事情可能出错。起初我还以为逃逸造成的问题,这似乎并没有这样的情况?
我的代码创建一个字符串$query_in
,然后使用
mysql_query($query_in);
通过我附和$query_in
字符串进行调试:
SELECT * FROM table WHERE attribute1 LIKE
"%a & b%" OR attribute2 LIKE "%a & b%" OR
attribute3 LIKE "%a & b%" OR attribute4
LIKE "%Ta & b%" OR attribute5 LIKE "%a & b%"
OR attribute6 LIKE "%a & b%"
如果我手动运行(复制粘贴&)这个查询在phpMyAdmin界面,它工作得很好,我得到的结果。然而,当我使用检查从数据库空返回值:
$count = mysql_num_rows($query);
echo $count
返回0
怎么可能?另外,放心,我会切换事情交给msqli后,这是固定的;)
应用这两个东西。 1-您需要将表格的排序规则定义为utf8_general_ci。你需要定义'mysql_set_charset('utf8');'在与数据库建立连接的文件中,在选择数据库(如'mysql_select_db')之后,使用'mysql_set_charset',这将允许您以任何语言正确添加和检索数据。之后,只需使用mysql_real_escape_string执行搜索,就可以得到所需的内容。干杯 –
伙计们,伙计们!没有人在那里警告我们的年轻朋友[不要使用mysql_ *函数](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)? – giorgio