我在使用urlencode然后使用urldecode(已尝试过标准的urlencode和rawurlencode)将数字传递给php中的GET sting时遇到了一些麻烦。问题仅限于数值,因为我的代码适用于其他所有内容。
以下是相关的代码部分:
if (isset($_GET['q'])) {
$qry = $_GET['q'];
$qry = urldecode($qry);
}
这是用于搜索的代码:
$qry = "SELECT * FROM jobs JOIN clients ON jobs.Client = clients.ClientCode WHERE JobNumber LIKE '%1%'";
if (isset($_GET['DP']) && (strlen($_GET['DP']) > 0)) {
$qry .= " AND DP LIKE %" . $_GET['DP'] . "%";
} elseif (isset($_POST['DP']) && (strlen($_POST['DP']) > 0)) {
$qry .= " AND DP LIKE '%" . $_POST['DP'] . "%'";
}
if (isset($_GET['JobDescription'])) {
$qry .= " AND JobDescription LIKE '%" . $_GET['JobDescription'] . "%'";
} elseif (isset($_POST['JobDescription']) && (strlen($_POST['JobDescription']) > 0)) {
$qry .= " AND JobDescription LIKE '%" . $_POST['JobDescription'] . "%'";
}
if (isset($_GET['JobNumber'])) {
$qry .= " AND JobNumber LIKE '%" . $_GET['JobNumber'] . "%'";
} elseif (isset($_POST['JobNumber']) && (strlen($_POST['JobNumber']) > 0)) {
$qry .= " AND JobNumber LIKE '%" . $_POST['JobNumber'] . "%'";
}
这是用于在处理完查询后对其进行编码的代码:
$qry = urlencode($qry);
这会导致网址的754611部分出错,并且页面未按预期执行。我认为它与运行到该值(在这种情况下为754611)的%25(代表%符号,并且是搜索所需的)有关,并且没有被正确解码。
我做错了什么?