【发布时间】:2013-04-30 23:25:34
【问题描述】:
在 Java 中,我将 String 传递给 PHP。
在 PHP 中,我使用该字符串并使用 MySQL 查询对其进行搜索。
这里是php代码:
$query = $database->escape_value(trim($_POST['query']));
$result = mysqli_query($dbconnection, Data::getSearchQuery($query));
while ($row = mysqli_fetch_assoc($result)) {
$output[] = $row;
}
print(json_encode($output));
mysqli_close($dbconnection);
public static function getSearchQuery($item_query) {
$query = "
SELECT i.item, i.item_id, c.category, c.cat_id
FROM items as i
LEFT JOIN master_cat AS c
ON (c.cat_id = i.cat_id)
WHERE i.item LIKE '%{$item_query}%'
ORDER BY i.item ASC;";
return $query;
}
如果我在美式键盘上使用常规字符,这总是有效的。但是当我开始使用不规则字符时,搜索就变成了空。
我可以验证MySQL 存储用户输入的数据。所以如果他们输入Beyoncè,这就是数据库存储它的方式。
但是当我在上面的代码中搜索Beyoncè(或其他)时,它返回空。
我应该如何处理字符。在这里编码?
【问题讨论】:
-
你应该使用存储过程而不是你的 php 代码中的 SQL,如果你不小心可能会导致 sql 注入攻击
标签: java php mysql character-encoding