0

だから私は次のPHPコードを持っています

<?php 

error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

    $poscote = $_POST['postcode'];

    mysql_real_escape_string($poscote);

    //! Checks for direct access to page

    if (empty($_POST)) {
        header('location:index.php?nothingentered');
        die();
    }


    require_once('../Connections/PropSuite.php'); 


    mysql_select_db($database_Takeaway, $Takeaway);
    $query_PC = "SELECT * FROM Postcodes WHERE pc = '$postcode'";
    $PC = mysql_query($query_PC, $Takeaway) or die(mysql_error());
    $row_PC = mysql_fetch_assoc($PC);

    if( mysql_errno() != 0){
     // mysql error
     // note: message like this should never appear to user, should be only stored in log
     echo "Mysql error: " . htmlspecialchars( mysql_error());
     die();
     }

    else {

    echo $row_PC['oc'];

    }

?>

これは、次のコードでフォームを処理するためのものです

<form action="search_postcode.php" method="post">
        <input type="text" name="postcode" />
        <button>Go</button>
    </form>

不思議なことに、それは空白の画面を表示しているだけで、エラーはなく、私がチェックしたものは何もなく、解決策を見つけることができないようです。

よろしくお願いします。

4

3 に答える 3

1

他の回答に加えて、PDOまたはを使用する必要があるmysqliことは言うまでもなく、文字エンコードの問題が発生している可能性があります。次のようなことを試してください。

define('DB_CHARSET', 'ISO-8859-1');
define('REPLACE_FLAGS', ENT_COMPAT | ENT_XHTML);

...

echo "Mysql error: " .  htmlentities(mysql_error(), REPLACE_FLAGS, DB_CHARSET);

DB_CHARSETの値を、データベースが使用しているエンコーディングに置き換えます。無効な文字で使用しようとするhtmlentities()と、空の文字列が生成されます。

于 2013-03-20T21:46:53.763 に答える
1

変数が未定義であるため、データベースでエラーメッセージが$postcodeある行を探しています。pc

このクエリはエラーなしで非常にうまく終了する可能性がありますが、おそらく0行が生成されるため、エラーは発生せず、結果も発生しません。その場合、何も出力しないため、空白の画面が表示されます。

あなたはおそらく欲しい:

$postcode = mysql_real_escape_string($poscote);

それ以外の:

mysql_real_escape_string($poscote);

データベース接続セクションの下に配置します。

mysql_*また、SQLインジェクションの問題を回避し、関数が非推奨になるため、PDO(またはmysqli)とプリペアドステートメントに切り替える必要があります。mysql_real_escape_stringデータベース接続を開いていない場合は、何もしないことに注意してください(変数の内容を削除することを除いて...)。

于 2013-03-20T21:44:46.670 に答える
0

php.netの時点で、を使用してphpエラーを有効にするには、次のini_setようにする必要があります

ini_set('display_errors', '1')

これはこのリンクから取得されます

于 2013-03-20T21:45:12.617 に答える