0

PHP では、検証が必要な 1 つのフィールドとその文字列が両側から削除された単純なフォームを取得しました。文字列から特定の文字を保持し、この削除された文字列がmysql DBにある場合に一致させたい. DBに存在する場合は、文字列をDBに別のテーブルに入力し、存在しない場合は破棄します。

問題は、現在、入力したすべてが if ステートメントによって true として検証され、データベースに挿入されることです。毎回ではなく、if ステートメントが true の場合にのみ挿入する必要があります。ストリングストリッピングなしで動作するようになりましたが、がらくたからストリングを除去すると、再び動作することはありません...

これは文字列ストリップを含むコードで、すべてが true であると検証されます

    ...
    $txt=substr($_POST[ZZ_ID],12,-1);

    $test = mysql_query("SELECT ZZcode FROM ZZcodes WHERE ZZcode='$txt'");
    $row = mysql_fetch_array($test);

    if ($row['ZZcode']== $txt)         
    $sql="INSERT INTO Data
    VALUES
    ('$_POST[ZZ_ID]','$_POST[ID]', TIMESTAMP(8))";
    else
            echo "ZZ code error";
            echo "<br />";
            echo $txt;
     if (!mysql_query($sql,$con))
     {
      die('Error: ' . mysql_error());
              }
    mysql_close($con)
    ...

動作する文字列ストリップのないコードのブロックは次のとおりです。

    ...
    $test = mysql_query("SELECT ZZcode FROM ZZcodes WHERE ZZcode='$_POST[ZZ_ID]'");
    $row = mysql_fetch_array($test);

    if ($row['ZZcode']== $_POST[ZZ_ID])
    $sql="INSERT INTO Data
    VALUES
    ('$_POST[ZZ_ID]','$_POST[ID]', TIMESTAMP(8))";
    else
            echo "ZZ koodi ei saa sisestada";
            echo "<br />";
     if (!mysql_query($sql,$con))
     {
      die('Error: ' . mysql_error());
              }
    mysql_close($con)
    ...
4

2 に答える 2

0

文字列を比較したい場合は、strcmpなどの文字列比較関数を使用することをお勧めします。strcmpの詳細については、strcmp-PHPマニュアルをご覧ください。

2つの文字列が等しい場合、この関数は0を返します。この比較では大文字と小文字が区別されます。

于 2012-06-05T13:38:04.763 に答える
0

var_dump($_POST[ZZ_ID])セットする直前$txt=substr($_POST[ZZ_ID],12,-1);

そしてvar_dump($txt)

substr()その機能があなたの問題だと思います!

于 2012-06-05T13:17:26.827 に答える