2016-07-25 73 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 .. –