2012-11-26 51 views
-1

我是MySQL查询新手。这是我到目前为止我做错了什么?PHP/SQL - 语法错误

"INSERT INTO users (ip) WHERE id = '".$_SESSION["user"]["id"]."' 
VALUES ('$ip')" 

编辑

我只是问我的语法怎么是错误的。我了解这些漏洞,并没有将它们粘贴到我的问题中。我正在使用PDO库和mysql_real_string_escape WHENEVER我可以...

+4

** **警告你的代码是非常容易受到SQL注入攻击。 –

+0

尝试使用$ _SERVER [“REMOTE_ADDR”]并将其放入我的数据库的IP字段中。如果他们已经登录,我使用与数据库中的ID相对应的用户ID指示要指定哪一行。 –

+0

INSERT INTO ... WHERE? –

回答

4

INSERT查询是错误的。我认为你正在更新的东西,你需要使用更新查询

UPDATE users SET ip = '$ip' WHERE id = '".$_SESSION["user"]["id"]."' 

还努力修复SQL注入攻击。

+0

我该如何解决SQL注入问题? MySQL真正的字符串转义? –

+0

是的,使用mysql实际字符串转义 –

+0

使用'PDO_MYSQL',它比'mySQL'更安全。 [PDO_MYSQL](http://php.net/manual/en/ref.pdo-mysql.php)也检查这个SO发布表单更多信息[MySQL与PDO](http://stackoverflow.com/questions/866860/ MySQL的抗PDO) –

0
INSERT INTO table_name (column1, column2, column3,...) 
    VALUES (value1, value2, value3,...) 
    WHERE column_name operator value 

sql injection info

1
INSERT INTO users (ip) 
VALUES ('value to insert') 

UPDATE users 
SET ip = 'value to update' 
WHERE ip = 'value to check' 

此外,包住value to updatevalue to insert在PHP mysqli_real_escape_string($DB,$val)