2013-02-06 36 views
0

繼承人我的代碼如何將功能相結合,讓某些studid的信息

if(isset($_POST['select'])){ 
$studId = $_REQUEST['studid']; 
foreach ($studId as $ch){ 
echo $ch."<br>"; 
} 
} 
//the result of this is like this 
c-1111 
c-1112 
c-1113 
// but i want to know their names 

我有一個函數來得到下圖所示的studinfo。在上面的代碼如何將我申請/插入此得到那些stuid's..pls的名字幫助

function getuserinfo($ch){ 
$info_select = "SELECT `$ch` FROM `tbl_student` WHERE `studId`='$ch'"; 
if ($query_get = mysql_query($info_select)) { 
if ($result = mysql_result($query_get, 0, $ch)) { 
return $result; 
} 
} 
} 
$fname = getuserinfo('fname'); 
$lname = getuserinfo('lname'); 
$mname = getuserinfo('mname'); 
+0

代碼有什麼幫助? –

+0

@WilliamN ...知道這些studid的名字 –

回答

0

這是瘋狂危險的是,但這裏的基本思想是: 您當前的查詢莫名其妙地獲取了學生ID,其中學生ID等於傳遞的值。所以看起來它只是試圖驗證,但它是沒有必要的。你想通過傳遞ID返回所有信息,然後用剛*的所有fetch更換一次$ CH ...

function getuserinfo($ch){ 
    $info_select = "SELECT * FROM `tbl_student` WHERE `studId`='$ch'"; 
    if ($query_get = mysql_query($info_select)) { 
     if ($result = mysql_result($query_get, 0, $ch)) { 
      return $result; 
     } 
    } 
} 

你把它叫做:

getuserinfo($ch); 

然後,您可以訪問所有學生該行的信息。如果這沒有意義,請嘗試var_dump(getuserinfo($ch))以查看返回的內容。

但是,你只是從$ _REQUEST提取RAW,絕對沒有清洗。你很容易以這種方式攻擊。

切換到PDO或mysqli並使用預準備語句。這個答案只是解釋如何得到信息。絕不允許使用這些不推薦使用的方法。

編輯

根據您的意見,您需要訪問的結果做類似的東西...

if(isset($_POST['select'])){ 
    $studId = $_REQUEST['studid']; 
    $where = ""; 
    foreach ($studId as $ch){ 
     $where .= "studId = '$ch' OR"; 
    } 
    if(strlen($where) > 0) 
    { 
     $where = substr($where, 0, -2); 
     $result = $mysqli->query("SELECT studId, CONCAT(fname, " ", mname, " ",lname) AS name FROM tbl_student WHERE $where"); 
     while ($row = $result->fetch_assoc()) { 
      echo $row['name'].'<br>'; 
     } 
    } 
} 

...再次,淨化輸入。這個例子中沒有完成。這只是爲了給出一個想法

+0

我仍然有一個錯誤,它說,找不到(最後studid被選中)在MySQL結果索引6 if($ result = mysql_result($ query_get,0, $ ch)) –

+0

像這樣,if(isset($ _ POST ['select'])){$ studId = $ _REQUEST ['studid']; foreach($ studId as $ ch){$ result = $ mysqli-> query(「SELECT tbl_student.studId,tbl_student.fname,tbl_student.lname,tbl_student.mname FROM tbl_student WHERE studId ='$ ch'」); echo $ ch。「
」; \t} \t} –

+0

我更新了。沒有承諾,但肯定 - 沒有任何技術上的理由,除非$ mysqli超出範圍,否則爲什麼不能在該條件中查詢學生。知道的一種方法 - 嘗試一下。 –

相關問題