2016-07-25 58 views
0

在这里我做了一个MySQL的列“ID”,“名称”,“用户名”,“电子邮件”,年龄“甚至我让PHP代码检索数据给定id从php中检索值使用php

例如:。如果用户输入ID = 3则示出了对应于该ID的DATAS

但现在我想设定的多个输入,使得用户可以键入一个以上的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

永远不会工作,因为你从不在你的查询中使用'$ id'。 '$ work'未定义。 –

+0

我编辑了问题 –

+0

,你很容易[sql注入攻击](http://bobby-tables.com) –

回答

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注入敞开的。你真的应该使用参数化查询。

+0

我得到一些错误,你可以用精确的代码PLZ回答 –

+0

你会得到什么错误? –

+0

解析错误:语法错误,意外的'id'(T_STRING)位于/home/u115908902/public_html/mysort.php第19行 –

0

使用 “IN” 的条件:

如果ID是一个数字:

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

如果ID是一个字符串,把ID在报价:

SELECT * FROM user WHERE id IN ('89N', '15B', '25E'); 

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

+0

我应该使用什么格式的URL .. –