使用php从MySQL中检索值

时间:2016-07-25 17:01:58

标签: php mysql database

这里我创建了一个MySQL,其中包含“id”,“name”,“username”,“email”,age“的列。甚至我在PHP代码中检索给定id的数据。

例如:如果用户输入id = 3,则显示与id对应的数据。

但现在我想设置多个输入,以便用户可以输入多个id,并列出特定id的相应数据。

我的PHP代码:

<?php 

if($_SERVER['REQUEST_METHOD']=='GET'){

    $id  = $_GET['id'];




    require_once('dbConnect.php');

    $sql = "SELECT * FROM user WHERE id='".$id."'";

    $r = mysqli_query($con,$sql);

    $result = array();

            while($res = mysqli_fetch_array($r)){

    array_push($result,array(
        "id"=>$res['id'],
        "name"=>$res['name'],
        "username"=>$res['username'],
        "email"=>$res['email'],
         "age"=>$res['age']
        )
    );
            }
    echo json_encode(array("result"=>$result));

    mysqli_close($con);

} 

现在这个URL提供了完美的结果: “http://www.allwaysready.16mb.com/Sort.php?id=4

现在我如何获得多个id的相应值?

2 个答案:

答案 0 :(得分:1)

您可以使用数组语法将多个ID传递给您的脚本,并使用MySQL的IN()一次性查询它们。

网址:http://www.allwaysready.16mb.com/Sort.php?id[]=4&id[]1&id[]=2

$ids = $_GET['id'];
$ids = array_map(function($id) {
    return (int) $id;
}, $ids);
$ids = implode(',', $ids);

$sql = "SELECT * FROM user WHERE work IN($ids);

我将ID转换为整数,因为您当前的代码对SQL注入是开放的。你真的应该使用paramterized查询。

答案 1 :(得分:0)

使用“IN”条件:

如果id是数字:

var p = {x: /*user longitude*/, y: /*user latitude*/};
var p0 = {x: /*rect longitude*/, y: /*rect latitude*/};
var a = /*angle of the rect in rad*/;
var l1 = /*length of one side of the rectangle*/
var l2 = /*length of the second size*/
isInRectangle(p.x, p.y, p0.x, p0.y, a, l1, l2); // => return true if inside, false otherwise

如果id是一个字符串,请将id放在引号中:

SELECT * FROM user WHERE id IN (89, 25);

在PHP中重写您的查询以使用In Query条件,密切关注您的列定义数据类型。例如,必须引用字符串。