-2
$jobid = $_GET['idx'];
$sql2 = "SELECT * FROM job WHERE job_idx = '$jobid' ";
$result2 = mysql_query($sql2);
while($row = mysql_fetch_assoc($result2))
{
if($row["job_specialization"] == '228')
{ $spec.=" Accounting ";}
if($row["job_specialization"] == '24')
{ $spec.=" Admin / Clerical / Secretarial ";}
if($row["job_specialization"] == '3')
{ $spec.=" Audit & Taxation ";}
if($row["job_specialization"] == '5')
{ $spec.=" Banking / Finance / Investment / Credit Control ";}
}

echo "$spec";

私のデータベースでは、228、24、3 の最大 3 つの値のみの配列を挿入することができました。これらの数値は preview-ad3.php で表示できますが、上記のように値を単語に変更するにはどうすればよいですか? 例えば。

echo $spec;

経理・総務・事務・秘書・監査・税務

仕事を完了するためにこのことしか残っていないので、誰かがこれについて私を助けてくれれば幸いです。ありがとう


回答が更新されました

    $jobarr = explode(",", $row['job_specialization']); 

if(in_array("228", $jobarr))
{ $spec.=" Accounting,";}
    if(in_array("3", $jobarr))
{ $spec.=" Audit & Taxation,";}

私はこのコードを試しました。そしてそれはうまくいきます!とにかく助けてくれてありがとう。:)

4

3 に答える 3

0

コードが SQL インジェクションに対して脆弱であり、GET 変数をサニタイズしたり、準備済みステートメントを使用してクエリを実行したりしないと、侵入者がデータベースで厄介なことを実行できるという事実を無視します。

私の理解では、データベースは job_specialization を ID で保存しており、番号を名前にマップしたいと考えています。

長い道のりは、現在のデータベース スキーマを変更し、id を持つ job_specialization と name 列を持つ 2 つのテーブルを用意し、これらのテーブルを結合して、データベースから job_specialization の名前を取得することです。

逆に、コードを少し読みやすくするために、define関数を使用すると、コードは次のようになります。

define('ACCOUNTING','228');
define('SECRETARIAL','24');
define('AUDIT','3');
define('BANKING','5');

$jobid = mysql_real_escape_string($_GET['idx']);
$sql2 = "SELECT * FROM job WHERE job_idx = '$jobid' ";
$result2 = mysql_query($sql2);

while($row = mysql_fetch_assoc($result2)) {

    switch($row['job_specialization']) {
     case ACCOUNTING:
         $spec.=" Accounting ";
         break;
     case SECRETARIAL:
         $spec.="Secretarial ";
         break;
    }

}

echo $spec;

繰り返しになりますが、これはパフォーマンスに関して言えば最良のコードではないかもしれませんが、少なくともあなたが投稿したものよりも読みやすいです。

于 2013-04-24T01:41:48.483 に答える
0

このヘルプをホップ

$spec_map = array('228'=>'Accounting',
                '24'=>' Admin / Clerical / Secretarial',
                 '3' =>'Audit & Taxation',
                 '5'=>'Banking / Finance / Investment / Credit Control'
                );

$spec='';

while($row = mysql_fetch_assoc($result2))
{
$spec .= $spec?',':'';
$spec .= $spec_map[$row["job_specialization"]];
} 

echo $spec;
于 2013-04-24T01:43:45.773 に答える