-5
<?php
 include "db.php";

 $var = @$_POST['find'];

 //check for empty string and display a message.
 if($var == ""){
echo "<p>Please input a valid 6-digit ID number</p>";
exit;
 } else {

$searchMember = "SELECT * FROM $tablename WHERE id='$var'";

$numresults=mysql_query($searchMember);
$numrows=mysql_num_rows($numresults);

if($numrows == 1){
    echo $searchMember['displayname'];
} else if ($numrows == 0){
    echo "<p>Sorry, we couldn't find anything that matches your input. Try again?</p>";
} 
   }

?>

データベースに接続するための情報を db.php に含めました。フォームは次のようになります。

<body>
<?php 
include "db.php";
include "searchSystem.php"; 
?>
<form name="search" method="post" action="searchSystem.php">
    Input a 6-digit ID number: <input type="text" name="find" />

    <input type="submit" name="search" value="Search" />
</form>

私のテーブルには、ユーザーの 6 桁の ID を持つ列があります。友達の ID 番号を検索して、プロフィールを見られるようにしたいと考えています。


だからこれは私が今書いたものです:

<?php
include "db.php";

$var = isset($_POST['find']) ? $_POST['find'] : '';

//check for empty string and display a message.
if($var == ""){
echo "<p>Please input a valid 6-digit ID number</p>";
exit;

} else {

$searchMember = $db->query("SELECT * FROM $tablename WHERE id='$var'");
$row_count = $searchMember->row_count();
$result =$searchMember->fetchALL(PDO::FETCH_ASSOC);

if($row_count == 1){
    echo $result['displayName'].' '.$result['id'];
} else if ($row_count == 0){
    echo "<p>Sorry</p>";
}
}

?>

まだ動作しません:(

4

2 に答える 2

1

ここには多くの問題がありますが、それらのいずれかが実際の問題である場合、私は言えません:

$var = @$_POST['find'];

エラーを抑制せず、代わりに適切な入力をテストします。

$var = isset($_POST['find']) ? $_POST['find'] : '';

これは、SQL インジェクションに対して非常に脆弱です。

$searchMember = "SELECT * FROM $tablename WHERE id='$var'";

代わりに、変数を適切にエスケープします。

$searchMember = sprinf("SELECT * FROM $tablename WHERE id='%s'", mysql_real_escape_string($var));

さらに$tablename、含めるファイルに含まれていない限り、定義されることはありません。

$searchMemberは配列ではありません。クエリの結果を参照するつもりだと思いますが、そのためには次のことを行う必要があります。

$memberResult = mysql_fetch_assoc($numrows);
echo $memberResult['displayname'];

そして最後に、orを使用mysql_*するべきではありません。PDOMysqli

于 2013-03-11T19:57:44.233 に答える
1

明らかな問題が 2 つあります。

  • $tablename定義されていません
  • $searchMember連想配列ではなく文字列なので$searchMember['displayname']意味がありません
于 2013-03-11T19:54:15.993 に答える