如何将JSON转换为SQLI查询 - php

时间:2015-07-01 07:10:28

标签: php json mysqli

我对编码很新,我已经了解情况,我需要将JSON转换为SQLi查询,但我无法完成我需要的工作。

我试图找到一种从url获取参数的方法,并且基于它们使用一般函数从我的DataBase中插入INSER,UPDATE,DELETE或SELECT。

JSON INSERT:
{"Username":"MyEmail@email.com","Password":"329670c3265b6ccd392e622733e9772f"}

JSON UPDATE:
{"Username":"MyEmail@email.com","Password":"newpacd392worda12123sdw112asddww"}

从检查URL查询字符串并将其转换为JSON

的函数中检索以上JSON
 function php_raw_query() {
        $raw = filter_input(INPUT_SERVER, 'QUERY_STRING', FILTER_SANITIZE_STRING);
        $arr = array();
        $pairs = explode('&', $raw);
        foreach ($pairs as $i) {
            if (!empty($i)) {
                list($name, $value) = explode('=', $i, 2);
                if(isset($arr[$name])){
                    if (is_array($arr[$name])){
                        $arr[$name][] = $value;
                    } 
                    else {
                        $arr[$name] = array($arr[$name], $value);
                    }
                } 
                else {
                    $arr[$name] = $value;
                }
            }
        }       
        return $arr;
    }
    $json = json_encode(php_raw_query());

完成此操作后,我需要根据传递的数据构建变量查询,例如,如果我有USER和PASS,我可以登录,注册,请求传递更改或删除。

考虑到这一点,用户可以执行:

SELECT * FROM 'users' WHERE 'Username'='MyEmail@email.com' AND 'Password'='329670c3265b6ccd392e622733e9772f';

请注意,列名(Username)和Value(MyEmail@email.com)分别取自JSON Key,Value,仅当JSON数组包含多于1个元素时才包含AND语句。

这可以完成吗?

3 个答案:

答案 0 :(得分:1)

它应该对你有所帮助

function addSubReddit() {
    var textValue = document.getElementById('#myText').value;
    ....
    ....
    ....
}

但是以这种方式准备查询是不安全的。看https://pl.wikipedia.org/wiki/SQL_injection

答案 1 :(得分:0)

@Lukasz,我刚刚使用了一段代码,工作得很好。我已经对raw_query函数应用了最小的更改,但似乎工作正常。

此外,我不理解SQL注入的事情。你介意再说一点吗?

感谢。

网址:context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(newFile.getParentFile()));

`

_module.php?Username=MyEmail@email.com&Password=329670c3265b6ccd392e622733e9772f

`

AJAX:

`

ob_start();

function php_raw_query() {
    $raw = filter_input(INPUT_SERVER, 'QUERY_STRING', FILTER_SANITIZE_STRING);
    $arr = array();
    $pairs = explode('&', $raw);
    foreach ($pairs as $i) {
        if (!empty($i)) {
            list($name, $value) = explode('=', $i, 2);
            if (isset($arr[$name])) {
                if (is_array($arr[$name])) {
                    $arr[$name][] = $value;
                } else {
                    $arr[$name] = array($arr[$name], $value);
                }
            } else {
                $arr[$name] = $value;
            }
        }
    }
    return json_encode($arr);
}

$object = json_decode(php_raw_query());

function generate($object) {
    $query = 'SELECT * FROM table WHERE ';
    $paramsArray = [];
    foreach ($object as $key => $value) {
        $paramsArray[] = "'$key' = '$value'";
    }
    return $query . implode(' AND ', $paramsArray) . ";";
}

echo generate($object);

ob_end_flush(); 

}); `

输出div显示:$(document).on('submit', 'form', function (e) { var information = $(this).serialize(); e.preventDefault(); $.ajax({ url: "_module.php", data: information, type: "GET", dataType: "json", success: function (data) { $("#post-wrapper").html(data); }, error: function () { console.log('Cannot retrieve data.'); } });

答案 2 :(得分:0)

首先使用json_decode解码你的json代码并存储在一个变量中,并在sql查询中使用它。