覆盖MySQL表中的数据
通过下面的查询,我试图用值覆盖MySQL表中的数据,mysql,Mysql,通过下面的查询,我试图用值NEW\u value覆盖MySQL表中名为“login”的第10个字段。它不起作用了。下面的代码是覆盖MySQL表中现有数据的正确方法吗 提前感谢, 约翰 不,您的代码不正确。您正在向表中添加新行,而不是更新现有值。要更新现有值,请使用update语句: 更新特定记录 mysql_query("Update login SET nameOfYourColumn = '$cleanURL' WHERE primaryKey = idOfRowToUpdate") 更新
NEW\u value
覆盖MySQL表中名为“login”的第10个字段。它不起作用了。下面的代码是覆盖MySQL表中现有数据的正确方法吗
提前感谢,
约翰
不,您的代码不正确。您正在向表中添加新行,而不是更新现有值。要更新现有值,请使用update语句: 更新特定记录
mysql_query("Update login SET nameOfYourColumn = '$cleanURL' WHERE primaryKey = idOfRowToUpdate")
更新整个表的步骤
mysql_query("Update login SET nameOfYourColumn = '$cleanURL'")
不,您的代码不正确。您正在向表中添加新行,而不是更新现有值。要更新现有值,请使用update语句: 更新特定记录
mysql_query("Update login SET nameOfYourColumn = '$cleanURL' WHERE primaryKey = idOfRowToUpdate")
更新整个表的步骤
mysql_query("Update login SET nameOfYourColumn = '$cleanURL'")
首先:INSERT向表中添加新记录,UPDATE更新(覆盖)一个或多个现有记录 第二:更新需要知道要更新的列的名称,以及要更新的行
UPDATE <tableName>
SET <columnName> = '$cleanurl'
WHERE <some condition to identify which record should be updated>
更新
SET=“$cleanurl”
哪里
第三:可能值得您阅读一些关于MySQL/SQL的基本教程。首先:INSERT向表中添加一条新记录,UPDATE更新(覆盖)一条或多条现有记录 第二:更新需要知道要更新的列的名称,以及要更新的行
UPDATE <tableName>
SET <columnName> = '$cleanurl'
WHERE <some condition to identify which record should be updated>
更新
SET=“$cleanurl”
哪里
第三:阅读一些关于MySQL/SQL的基本教程可能是值得的。如果我理解了你的问题,那么答案是“不”。这也不是mysql特有的问题,而是一个通用的SQL问题。我强烈建议大家学习SQL教程,我知道最好的教程是: 要回答您的问题,您应该能够:
mysql_query("UPDATE login SET foo = '$cleanurl'");
其中“foo”是第十个字段的名称
不过,还有一些其他评论:
首先,不要依赖于字段的位置,始终明确列出字段名。例如,最好是去
INSERT INTO login (id, name) VALUES (1, 'Fred')
而不是
INSERT INTO login VALUES (1, 'Fred')
第2点:您已经将$cleanurl的值直接嵌入到查询中。当然,你必须一次学习一件事,但要知道这是非常危险的。如果$cleanurl包含类似“”;DROP TABLE login;”的内容,那么您可能会遇到麻烦。这称为SQL注入,是不断出现安全问题的根源。在不涉及太多细节的情况下,您应该学习如何使用准备好的语句
第3点:PHP附带了一个名为PDO的库,它支持准备好的语句。它还提供了一个用于与数据库交互的通用API,因此如果您发现需要从Mysql迁移到另一个DBMS,PDO将消除大部分差异。通过使用mysql\u查询函数,您可以锁定自己,使之使用mysql
您不必同时解决所有这些问题,但也不要忘记它们,一旦您熟悉PHP和SQL,请回到关于PDO和准备好的语句的要点。如果我理解了您的问题,那么答案是“否”。这也不是mysql特有的问题,而是一个通用的SQL问题。我强烈建议大家学习SQL教程,我知道最好的教程是: 要回答您的问题,您应该能够:
mysql_query("UPDATE login SET foo = '$cleanurl'");
其中“foo”是第十个字段的名称
不过,还有一些其他评论:
首先,不要依赖于字段的位置,始终明确列出字段名。例如,最好是去
INSERT INTO login (id, name) VALUES (1, 'Fred')
而不是
INSERT INTO login VALUES (1, 'Fred')
第2点:您已经将$cleanurl的值直接嵌入到查询中。当然,你必须一次学习一件事,但要知道这是非常危险的。如果$cleanurl包含类似“”;DROP TABLE login;”的内容,那么您可能会遇到麻烦。这称为SQL注入,是不断出现安全问题的根源。在不涉及太多细节的情况下,您应该学习如何使用准备好的语句
第3点:PHP附带了一个名为PDO的库,它支持准备好的语句。它还提供了一个用于与数据库交互的通用API,因此如果您发现需要从Mysql迁移到另一个DBMS,PDO将消除大部分差异。通过使用mysql\u查询函数,您可以锁定自己,使之使用mysql
您不必同时解决所有这些问题,但也不要忘记它们,一旦您熟悉了PHP和SQL,请回到关于PDO和预处理语句的要点。如果有人仍在寻找实际的覆盖,而不仅仅是更新,这只是一个补充。如果要始终覆盖(不是更新,只是覆盖),可以使用
REPLACE
而不是INSERT
REPLACE的工作原理与INSERT完全相同,只是如果表中的一个旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前会删除旧行。参见第13.2.5节“插入语法”
如果有人仍在寻找实际的覆盖,而不仅仅是更新,那么这只是一个补充。如果要始终覆盖(不是更新,只是覆盖),可以使用
REPLACE
而不是INSERT
REPLACE的工作原理与INSERT完全相同,只是如果表中的一个旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前会删除旧行。参见第13.2.5节“插入语法”
可能需要在变量周围加引号,但这是个问题。谢谢。。。这看起来很有希望。。。但现在它只是在字段中输入一个空/空条目。知道为什么会这样吗?谢谢。。。我发布了另一个问题,人们指出我没有引用$cleanurl。可能需要在变量周围加引号,但是这个。谢谢。。。这看起来很有希望。。。但现在它只是在字段中输入一个空/空条目。知道为什么会这样吗?谢谢。。。我发布了另一个问题,人们指出我没有引用$clea