-3

こんにちは、誰かが助けてくれることを願っています。

あるページにID番号を入力するフォームがあります.ID番号がデータベースにある場合はフォームの送信時に、そうでない場合はデータベースからの情報が表示されます. 以下のコードを参照してください。現時点では、データベースにある ID 番号を入力すると正常に機能し、データベース情報が表示されますが、データベースにない番号を入力すると何も表示されません。いいえをエコーする。

誰かが私を正しい方向に向けることができれば、本当に感謝しています。

include '../book_classified_advertising/dbc.php';

$deletepost  = $_POST['webid1']; 

$result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");

while($row = mysql_fetch_array($result))
{
    if ($deletepost == $row['webid'])
    {
        echo $row['text']; 
    }
    else
    {
        echo 'no';
    }
}
4

5 に答える 5

2

まず第一に、コードは最も基本的な形式のSQL インジェクションに対して脆弱です(スクリプトの先頭に含めるファイルに何らかの形式のサニタイズが適用されていない限り)。

さて、あなたの問題によるとelse、データベースクエリからのすべての結果の反復内にネストされているため、その条件の部分に到達することはありません。結果がない場合、whileループ内のステートメントは実行されません。

于 2012-10-23T08:28:32.150 に答える
2

そのためには、コードを再編成する必要があります。

$result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");

if( mysql_num_rows($result) == 0) {
  echo 'no';
}
else  {
  while($row = mysql_fetch_array($result)) {
    echo $row['text']; 
  }
}
于 2012-10-23T08:29:28.917 に答える
1

なぜなら、$deletepost同じ場所で使用しているので、ifの条件は、$deletepost

あなたはこれをチェックすることができますmysql_num_rows($result)

そのような

$$deletepost =2'

クエリ

$result = mysql_query("SELECT * FROM class WHERE webid='2'");

$row['webid'] will be 2

if ($deletepost == $row['webid']) ///its like if(2 == 2)
{
echo $row['text']; 
}

次のようなものを試してください

 $result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");
if(mysql_num_rows($result)){
while($row = mysql_fetch_array($result))
{


        echo $row['text']; 


}}else
    {
        echo 'no';
    }
于 2012-10-23T08:27:51.510 に答える
0

問題はここにあります:

while($row = mysql_fetch_array($result))

結果がない場合、if ステートメントは実行されません。

于 2012-10-23T08:28:17.183 に答える
0

Mysql_num_rows を使用してレコード数を確認します

$num_rows = mysql_num_rows($result);
if($num_rows)
 {
     True condition
 }
else
 { 
    Fales condition
 }
于 2012-10-23T08:30:47.703 に答える