小编Deb*_*awn的帖子

将查询从Android发送到远程服务器数据库的正确方法

我在处理数据库方面不是很有经验.

我有一个Android应用程序,应该发送查询并从远程数据库服务器(MySQL)获取后续结果集.

我通过实际以JSON的形式将查询发送到服务器来完成此操作.然后,服务器脚本(PHP)将获取查询并执行它.然后将结果集再次解析为JSON并发送回Android应用程序.

我的PHP脚本

function run_query(mysqli $con, $query){
    $res=$con->query($query);
    return $res;
}

$reply = array();

if(isset($_POST['json'])) {
    require_once __DIR__.'/config.php';
    require_once __DIR__.'/DbController.php';
    $json = json_decode($_POST['json'], true);
    $query = $json['query'];
    $con = (new DbController())->connect(DBNAME);
    if(!$con){
        $reply['suc']=false;
        $reply['err_msg']=$con->error;
    }
    else{
        $res = run_query($con, $query);
        if(gettype($res)=="boolean"){
            $reply['query_reply']=$res;
            $reply['suc']=true;
            die(json_encode($reply));
        }
        $i=0;
        $reply['query_reply']= array();
        while($row = $res->fetch_row()){
            $reply['query_reply'][$i] = array();
            for($j=0;$j<sizeof($row);$j++)
                $reply['query_reply'][$i][$j]=$row[$j];
            $i++;
        }
        $reply['suc']=true;
    }
    echo json_encode($reply);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,'query'密钥包含MySQL服务器执行的整个查询字符串.

我的问题是 - 这种方式是否包含我不知道的任何安全(或其他)漏洞?另外,有更好的方法吗?

我的一个项目伙伴建议我将查询分成不同的部分(Like-"query_type":"SELECT","table_name":"LOGIN_TABLE","where_args":"WHERE x = x",依此类推)并将其发送到服务器,然后在那里重建查询并执行.

但是,我不明白这会有什么帮助.任何建议将不胜感激.先感谢您.

php mysql database security android

5
推荐指数
1
解决办法
846
查看次数

在C中声明函数内部的函数

我在网上考试中发现了这个问题.这是代码:

#include <stdio.h>

int main(void) {
    int demo();
    demo();
    (*demo)();
    return 0;
}

int demo(){
    printf("Morning");
}
Run Code Online (Sandbox Code Playgroud)

我在测试后看到了答案.这就是答案:

MorningMorning
Run Code Online (Sandbox Code Playgroud)

我看了解释,但不明白为什么这就是答案.我的意思是,这条线不应该int demo();引起任何"问题"吗?

任何解释都有帮助.谢谢.

c function-pointers function function-declaration

4
推荐指数
1
解决办法
106
查看次数