0

ここに私のコードがあります

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

以下に示すスタッド情報を取得する機能があります。上記のコードにこれを適用/挿入して、これらの学生の名前を取得するにはどうすればよいですか..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');
4

1 に答える 1

0

これはそのままでは非常に危険ですが、基本的な考え方は次のとおりです。現在のクエリは、学生 ID が渡された値と等しい学生 ID を不可解に取得します。検証しようとしているように見えますが、不要です。すべての情報を返したい場合は、最初の $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;
        }
    }
}

ID を渡して呼び出します。

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>';
        }
    }
}

...再び、入力をサニタイズします。この例では実行されていません。これはアイデアを与えるためのものです

于 2013-02-06T02:02:53.597 に答える