2011-08-20 96 views
-1

因此,這裏是我的代碼,不知道爲什麼它不工作已經看了幾個小時,指向任何人都可以弄明白。變量傳遞正常,並建立了服務器連接。瀏覽器給出的錯誤消息是,PHP不會更新/插入

您的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在'用戶名'','2011年8月20日星期六02:02:22 PM','first','last','ssn'在第2行附近使用正確的語法

我用變量名稱替換了變量數據,這樣您就可以得到一個想法,所以首先說的是,瀏覽器實際上顯示了我輸入的名字。

謝謝!

$HTTP_COOKIE_VARS['username'] = $username; 
$email = $_REQUEST['email']; 
$Todaysdate = date('l jS \of F Y h:i:s A'); 
$firstname = $_REQUEST['firstname']; 
$lastname = $_REQUEST['lastname']; 
$ssn = $_REQUEST['ssn']; 
$street = $_REQUEST['street']; 
$city = $_REQUEST['city']; 
$zip = $_REQUEST['zip']; 
$phone1 = $_REQUEST['phone1']; 
$phone2 = $_REQUEST['phone2']; 
$hdhas = $_REQUEST['hdhas']; 
$mi= $_REQUEST['mi']; 





$query = ("INSERT INTO Members (username, email, todaysdate, firstname, lastname, ssn,  street, city, zip, phone1, phone2, hdhas, mi) 
VALUES('$username','$email', '$Todaysdate', '$firstname', '$lastname', '$ssn', '$street', '$city', '$zip', '$phone1', '$phone2', '$hdhas', '$mi')"); 



$checkuser = mysql_query("SELECT username FROM Members WHERE username='$username'"); 


if(mysql_num_rows($checkuser)>0) 
{ 
mysql_query("UPDATE Members SET email='$email', username='$username', todaysdate='$Todaysdate', firstname='$firstname', lastname='$lastname', ssn='$ssn', street='$street', city='$city', zip='$zip', phone1='$phone1', phone2='$phone2', hdhas='$hdhas', mi='$mi' WHERE username = '$username'"); 
} 

else { 
mysql_query($query); 
} 

mysql_query($query) or die(mysql_error()); 
mysql_close(); 
+7

'$ email'是一個完整的查詢。此外,重要的閱讀:http://php.net/manual/en/security.database.sql-injection.php –

+4

歡迎MysqlInjection,來感覺像在家裏:)!閱讀http://php.net/manual/en/security.database.sql-injection.php – genesis

+0

你在代碼中的SQL注入漏洞與Jupiter一樣大。也許你不小心插入了一些不好的值(即至少包含''')。 __LE__:哦,我發現它:'[..]正確的語法在'username''附近使用< - 插入的值是'username',這打破了查詢。 –

回答

4

用戶名可能是username'。嘗試在你的變量周圍添加mysql_real_escape_string()並閱讀大約SQL Injection