0

ユーザーの入力をテーブル内の既存の値と比較する SQL ルーチンを作成しました。値が存在する場合は、入力の横に緑色のチェック マークが表示されます。そうでない場合は、赤い x が表示されます。私のSQL文は次のとおりです。

      $check = $con->prepare("SELECT count(*) FROM emaillist");
      $check->execute();
      $result = $check->fetchColumn(); //Get no. of columns
      $check = $con->prepare("SELECT Username FROM emaillist WHERE Username =                                                                                                                                                                                                                               
              '$Name' AND '$Name' <> '' ");
      $check->execute();
      $result = $check->fetchColumn(); //Get exact column
      if(!$result) {
               show red x } else { show green check }

入力がある限り、これは正常に機能します。入力が一致しない場合は赤い x が表示され、一致する場合は緑のチェックが表示されます。ただし、フィールドが空白のままの場合は何も表示したくありません。現在、フィールドが空または null の場合、赤い x が表示されます。IS NOT NULL の使用も機能しませんでした。私は何が欠けていますか?

4

2 に答える 2

2

分岐は 2 つだけです: 赤い x を表示し、緑色のチェックを表示します。あなたは3分の1が必要です、例えば

if (!$Name) {
    //show nothing
}
else if (!$result) {
    //show red x
}
else {
    //show green check
}

無関係なことですが、使用しているのは素晴らしいことですがPDO、インジェクションから安全にするには、クエリを適切にパラメーター化する必要があります。

于 2013-10-02T20:59:25.087 に答える
1

次のようにロジックを書き直してみてください。

if ($Name != ''){
    $check = $con->prepare("SELECT Username FROM emaillist WHERE Username = '$Name'");
    $check->execute();
    $result = $check->fetchColumn(); //Get exact column
    if(!$result) {
          // show red x 
    } else { 
         // show green check 
    }
}
else {
    // show red here or some other input error message
}
于 2013-10-02T21:00:38.650 に答える