我有一個奇怪的問題。'插入'後PHP-MySQL數據被交換
我試圖通過一個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>
我在表單中輸入此: 鐠冰(= prijs):50 到達:2012-09-12 出發:2012-09-30
這導致這樣在MySQL:
價格:2012 到達:2012-09-30 出發:50
因此,徹底搞砸了......
我試過幾件事情,無論是在MySQL,PHP和HTML,都導致相同或更壞,我現在在一個階段,我沒有很更多線索如何解決這個問題...
感謝您的幫助!
大安
無論'PrepSQL'是,這似乎是某種逃生功能的,你不應該使用' mysql_query'在新的應用程序中。您應該使用'mysqli'或PDO並使用[SQL語句佔位符](http://bobby-tables.com/php)確保您的SQL轉義正確且一致地完成。滾動你自己的SQL轉義從來就不是一個好主意。如果你使用了指定的佔位符和'bind_param',這絕不會發生。 – tadman