0

你好朋友我需要关于 Mysql 的帮助。我的数据库看起来像这个
表名 = 用户

id = "7" | YourLastIP = ""

我的查询是:

UPDATE users SET `YourLastIP` = `XX.XX.XX.XX` WHERE `id` = `7`

我想插入,但它也不适合我,请指导我

 INSERT INTO Users `YourLastIP` = (`XX.XX.XX.XX`) WHERE `id` = `7`

如果表值未知,请帮助我如何插入值。

4

3 回答 3

1

您正在使用反引号,这意味着在 MySQL 中您的意思是列名,而不是文本。请改用单引号'

于 2013-04-04T14:02:22.110 回答
0

首先,问题是你已经用反引号包裹了这个值,这应该是单引号,因为它是一个字符串文字。

UPDATE users SET `YourLastIP` = 'XX.XX.XX.XX' WHERE `id` = '7' 

其次,INSERT ... ON DUPLICATE KEY UPDATE如果您想要UPDATE现有的ID,或者INSERT如果它不存在,则使用它。

INSERT INTO users(ID, YourLastIP)
VALUES (7, 'ip_here')
ON DUPLICATE KEY UPDATE YourLastIP = 'ip_here'

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-04-04T14:02:30.953 回答
0

在定义中使列 NULLABLE

然后,

CREATE TABLE PRO(ID INT, YOURLASTIP VARCHAR(15));
INSERT INTO PRO values(4, "xxx.xxx.xxx.xxx");
于 2013-04-04T14:07:14.490 回答