使用urlencode进行数字转换

时间:2016-05-28 04:48:06

标签: php sql urlencode urldecode

我在使用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);

输出一个字符串用于分页,例如 http://localhost/cpc/jobsearch.php?page=2&q=SELECT+%2A+FROM+jobs+JOIN+clients+ON+jobs.Client+%3D+clients.ClientCode+WHERE+JobNumber+LIKE+%27%251%25%27+AND+DP+LIKE+%27%25754611%25%27

这会导致网址的754611部分出错,并且页面未按预期执行。我认为它与运行到该值(在这种情况下为754611)的%25(代表%符号,并且是搜索所需的)有关,并且没有被正确解码。

我做错了什么?

0 个答案:

没有答案