提问者:小点点

POST方法中的php语法有问题[重复]


我在一个网站上工作,根据用户的输入在html表上显示来自数据库的数据。 HTML文件通过jquery'post‘方法连接到php文件。

archive.php(它的一部分):

if(isset($_POST["id"])){

    $id = $_POST["id"];
    if(is_numeric($id) == TRUE){
        $query="SELECT * FROM TestDataBase.usr WHERE idusr =" . $id;
        $result=mysqli_query($conn, $query);
    }else if(is_numeric($id) == FALSE){
        $query="SELECT * FROM TestDataBase.usr WHERE INSTR(name," . $id .")";
        $result=mysqli_query($conn, $query);
    }
        while($row = mysqli_fetch_array($result)){
            $data["idusr"] = $row["idusr"];
            $data["name"] = $row["name"];
            $data["surname"] = $row["surname"];
        }


    echo json_encode($data);
}

当输入的数据不是整数时,我有一个接收数据的问题。 在文件的else if部分,我使用的是INSTR(MySQL中的indexOf analog)。 每次我输入一个字符串,我就不断收到一个错误,所以我想我可能有一个语法错误,我无法定位。 如果你们中的一些人能帮我解决这个问题,那会很有帮助的。 谢啦!


共1个答案

匿名用户

看起来,您可能缺少字符串中的引号:

else if(is_numeric($id) == FALSE){
    $query="SELECT * FROM TestDataBase.usr WHERE INSTR(name,'" . $id ."')";
    $result=mysqli_query($conn, $query);
}

但是,请认真考虑休息一下,阅读有关SQL注入的内容,连接字符串来生成查询是您所能做的最糟糕的事情