2011-08-20 80 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