2013-02-06 38 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超出范围,否则为什么不能在该条件中查询学生。知道的一种方法 - 尝试一下。 –

相关问题