[英]mySQL_query not updating tables
我有以下一點PHP應該從表單中讀取條目然后更新相應的數據表以及附加登錄用戶的用戶名,但由於某種原因我們的數據庫沒有更新。
$Date = $_POST["Date"];
$Description = $_POST["Description"];
$Hour = (float)$_POST["Lat"];
$Min = (float)$_POST["Lon"];
$Username = $_SESSION['username'];
mysql_connect("localhost", "dbusername", "dbpass");
mysql_select_db("dbname",$connect) or die( "Unable to select database");
$sql = ("INSERT INTO Table (Date, Description, Hour, Min, Username)
VALUES ($Date, $Description, $Lat, $Lon, $Username)");
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
echo $Date;
echo $Description;
echo $Hour;
echo $Min;
echo $Username;
預先感謝您的任何幫助
您沒有將查詢輸入變量括在單引號中。
$sql = ("INSERT INTO Table (Date, Description, Hour, Min, Username)
VALUES ('$Date', '$Description', '$Lat', '$Lon', '$Username')");
您在查詢失敗時調用了mysql_error()
,可能是在第一個Date輸入值附近打印了一個語法錯誤。
在將它們傳遞給查詢之前,你還必須使用mysql_real_escape_string()
轉義$_POST
變量,以保護自己免受SQL注入攻擊。
$Date = mysql_real_escape_string($_POST["Date"]);
$Description = mysql_real_escape_string($_POST["Description"]);
// You might want to check sane bounds for these float values
// in addition to casting them as floats
$Hour = (float)$_POST["Lat"];
$Min = (float)$_POST["Lon"];
// Hopefully $Username is already sane, but escape to be safe
$Username = mysql_real_escape_string($_SESSION['username']);
調用mysql_select_db()
,第二個參數是可選的,實際上你沒有在代碼中定義$connect
。 我懷疑你的意思是:
$connect = mysql_connect("localhost", "dbusername", "dbpass");
mysql_select_db("dbname",$connect) or die( "Unable to select database");
嗯,這里有很多很棒的建議,但是你發布的代碼有一個明顯的問題。 您將分配緯度和經度值從帖子分配給名為$ Hour和$ Min的php變量...
$Hour = (float)$_POST["Lat"];
$Min = (float)$_POST["Lon"];
但是,當您編寫查詢時,您將這些值分別稱為$ Lat和$ Lon ....
$sql = ("INSERT INTO Table (Date, Description, Hour, Min, Username)
VALUES ($Date, $Description, $Lat, $Lon, $Username)");
您發布的代碼中沒有任何地方您實際為$ Lat或$ Lon分配了值,但您希望將其值分配給查詢的參數。 實質上,您在查詢中調用不存在的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.