Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖MySQL表中的数据_Mysql - Fatal编程技术网

覆盖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