【发布时间】:2015-09-18 05:18:25
【问题描述】:
我对编码很陌生,我已经遇到了需要将 JSON 转换为 SQLi 查询但我无法完成我需要的情况。
我正在尝试找到一种从 url 获取参数的方法,并基于它们使用通用函数从我的数据库中插入、更新、删除或选择。
JSON INSERT:
{"Username":"MyEmail@email.com","Password":"329670c3265b6ccd392e622733e9772f"}
JSON UPDATE:
{"Username":"MyEmail@email.com","Password":"newpacd392worda12123sdw112asddww"}
以上 JSON 是从检查 URL 查询字符串并将其转换为 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';
请注意,列名(用户名)和值(MyEmail@email.com)都分别取自 JSON 键、值,并且仅当 JSON 数组具有超过 1 个元素时才包含 AND 语句。
这可以实现吗?
【问题讨论】:
-
您如何知道何时插入和何时更新?您是通过 url 还是其他方式获得的?
-
我首先调用一个 AJAX,它使用 GET 方法指向上面的 PHP 文件,该文件将为其提供 SQL 查询以执行更新、插入等也可以在 url 中。所以 JSON 可以像 {"Action":"UPDATE","Username":"MyEmail@email.com","Password":"329670c3265b6ccd392e622733e9772f"} 我只需要知道如何阅读它并构建查询。