0

奇妙な問題があります。

PHP スクリプトを使用して MySQL に次のデータを入力しようとしています: 1. 到着 (日付) 2. 出発 (日付) 3. 価格 (int, 11)

PHPは次のとおりです。

if($_POST['formSubmit'] == "Submit") 
{
    $errorMessage = "";

    if(empty($_POST['type'])) 
    {
        $errorMessage .= "<li>Gelieve een type in te voeren!</li>";
    }

    $hotel = $_POST['hotel'];
    $type = $_POST['type'];
    $prijs = $_POST['prijs'];
    $arrival = $_POST['arrival'];
    $departure = $_POST['departure'];

    if(empty($errorMessage)) 
    {

        $sql = "INSERT INTO rooms (hotel, type, prijs, arrival, departure) VALUES (".
                        PrepSQL($hotel) . ", ".
                        PrepSQL($type) . ", ".
                        PrepSQL($arrival) . ", ".
                        PrepSQL($departure) . ", ".
                        PrepSQL($prijs) . ")";
        mysql_query($sql);          
        include("room-insert.php");
        exit();
    }
}


function PrepSQL($value)
{
    // Stripslashes
    if(get_magic_quotes_gpc()) 
    {
        $value = stripslashes($value);
    }

    // Quote
    $value = "'" . mysql_real_escape_string($value) . "'";

    return($value);
}

HTML は次のとおりです。

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

        <tr>
        <p>
            <label for='hotel'>Hotel</label><br/>
            <input name="hotel" maxlength="50" value="<?=$naam;?>" />
        </p>
        </tr>
        <tr>
        <td>
        <p>
            <label for='type'>Type</label><br/>
            <input type="text" name="type" maxlength="50" value="<?=$type;?>" />
        </p>
        </td>
        </tr>


        <tr>
        <td>
        <p>
            <label for='prijs'>Prijs</label><br/>
            <input type="text" name="prijs" maxlength="50" value="<?=$prijs;?>" />
        </p>
        </td>
        </tr>

        <tr>
        <td>
        <p>
            <label for='arrival'>Datum check-in</label><br/>
            <input type="date" name="arrival" maxlength="50" value="<?=$arrival;?>" />
        </p>
        </td>
        </tr>

        <tr>
        <td>
        <p>
            <label for='departure'>Datum check-out</label><br/>
            <input type="date" name="departure" maxlength="50" value="<?=$departure;?>" />
        </p>
        </td>
        </tr>

        <tr>
        <td>
                    <input type="submit" name="formSubmit" value="Submit" />
        </td>
        </tr>


    </form>

これを次の形式で入力します: Price (=prijs): 50 到着: 2012-09-12 出発: 2012-09-30

これは、MySQL では次のようになります。

価格: 2012 到着: 2012-09-30 出発: 50

だから、完全に台無しに...

MySQL、PHP、HTMLの両方でいくつかのことを試しましたが、すべて同じかそれ以上の結果になり、現在、これを解決する方法がわからない段階にあります...

ご協力いただきありがとうございます!

大安

4

3 に答える 3

0

あなたのバグのあるコードがあります:

 $sql = "INSERT INTO rooms (hotel, type, prijs, arrival, departure) VALUES (".
                        PrepSQL($hotel) . ", ".
                        PrepSQL($type) . ", ".
                        PrepSQL($arrival) . ", ".
                        PrepSQL($departure) . ", ".
                        PrepSQL($prijs) . ")";

変数を間違った順序で連結すると、次のようになります。

 $sql = "INSERT INTO rooms (hotel, type, prijs, arrival, departure) VALUES (".
                        PrepSQL($hotel) . ", ".
                        PrepSQL($type) . ", ".
                        PrepSQL($prijs) . ")";
                        PrepSQL($arrival) . ", ".
                        PrepSQL($departure) . ", ".
于 2012-08-27T12:33:41.247 に答える
0

あなたの問題は INSERT SCRIPT セクションにあるようです。

変更してみる

$sql = "INSERT INTO rooms (hotel, type, prijs, arrival, departure) VALUES (". 
    PrepSQL($hotel) . ", ". 
    PrepSQL($type) . ", ". 
    PrepSQL($arrival) . ", ". 
    PrepSQL($departure) . ", ". 
    PrepSQL($prijs) . ")"; 

$sql = "INSERT INTO rooms (hotel, type, prijs, arrival, departure) VALUES (". 
    PrepSQL($hotel) . ", ". 
    PrepSQL($type) . ", ". 
    PrepSQL($prijs) . ", ". 
    PrepSQL($arrival) . ", ". 
    PrepSQL($departure) . ")"; 
于 2012-08-27T12:35:25.720 に答える
0

値の順序を台無しにしました。

あなたの挿入:

$sql = "INSERT INTO rooms (hotel, type, prijs, arrival, departure) VALUES (".
                        PrepSQL($hotel) . ", ".
                        PrepSQL($type) . ", ".
                        PrepSQL($arrival) . ", ".
                        PrepSQL($departure) . ", ".
                        PrepSQL($prijs) . ")";
  1. ホテル
  2. タイプ
  3. 価格
  4. 到着
  5. 出発

次の順序でデータを挿入します。

  1. ホテル
  2. タイプ
  3. 到着
  4. 出発
  5. 価格
于 2012-08-27T12:35:49.470 に答える