这里我创建了一个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的相应值?
答案 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条件,密切关注您的列定义数据类型。例如,必须引用字符串。