2012-11-26 54 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)