0

テーブル(本)==>(keyid、name)

<form action="se.php">
    <select>
    <option value="1">book1</option>
    <option value="2">book2</option>
    <option value="3">book3</option>
    <option value="????">All Book</option>
    </select>
<input type="submit" name="search" value="search">
</form>

//se.php 
    $keyid=$_GET[keyid];
    $sql=mysql_query("SELECT `name` FROM `book` WHERE `keyid`='$keyid'");
//end page

SQLクエリの最後のオプション値(????)に何を入力すると、すべてのコンテンツが検索されますか?

4

3 に答える 3

2

すべて

それから:

$where = '';

if $keyid != all then {
  $where = WHERE `keyid`= $keyid // escape value protect from sql injection!
}

mysql_query("SELECT `name` FROM `book` $where");
于 2012-12-04T13:00:51.260 に答える
1

あなたのコードは、SQL インジェクションからの保護に関して非常に弱いです。入力をエスケープし、受け取った値を信頼しないでください。オプションでこの値について考えてください。

<option value="';truncate table book;">All Book</option>

良いアプローチは@cojackによる答えです

于 2012-12-04T13:05:53.423 に答える
1

これはそれを行う必要があります:

$keyid=mysql_real_escape_string($_GET[keyid]);
if(trim($keyid)!="")
    $where = " `keyid`='$keyid' ";
else
    $where = " 1 ";
$sql=mysql_query("SELECT `name` FROM `book` WHERE $where ");
于 2012-12-04T13:00:38.577 に答える