gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:29:51 25 4
gpt4 key购买 nike

我是编码的新手,我遇到过需要将 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';

请注意,列名 (Username) 和值 (MyEmail@email.com) 分别取自 JSON Key、Value,并且仅当 JSON 数组具有超过 1 个元素时才包含 AND 语句。

这能实现吗?

最佳答案

应该对你有帮助

$object = json_decode('{"Username":"MyEmail@email.com","Password":"329670c3265b6ccd392e622733e9772f"}');

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);

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

关于php - 如何将 JSON 转换为 SQL 查询 - php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com