Php 更新现有行,而不是在MySQL中创建新行

Php 更新现有行,而不是在MySQL中创建新行,php,mysql,insert-update,Php,Mysql,Insert Update,下面的代码正确地更新了MySQL表,因此当有人在团队中输入一个数字,并在cp2\u到达中输入一个时间时,它就会进入表中。但是,当我为下一次条目执行相同操作时,它会创建一个新行,而不会更新该团队的现有行 这是我的密码 <?php $con=mysqli_connect("localhost","","",""); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to Database, C

下面的代码正确地更新了MySQL表,因此当有人在团队中输入一个数字,并在
cp2\u到达
中输入一个时间时,它就会进入表中。但是,当我为下一次条目执行相同操作时,它会创建一个新行,而不会更新该团队的现有行

这是我的密码

<?php
$con=mysqli_connect("localhost","","","");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to Database, Contact Control: " . mysqli_connect_error();
}

// escape variables for security
$Team = mysqli_real_escape_string($con, $_POST['Team']);
$cp = mysqli_real_escape_string($con, $_POST['cp']);


$sql="INSERT INTO checkpoints (Team, CP2_Arrival)
VALUES (
 '".$Team."',
 '".$cp."00' 
)";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "record added";

mysqli_close($con);
?>

插入将始终创建新行(或出错)。根据您的表格结构,您可以执行以下操作:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";
但是,这需要团队列是唯一索引或主键。如果不是这样,则需要对表进行某种检查,以确定是要插入还是要更新,然后运行现有的insert语句,或者像这样运行update语句:

$sql="UPDATE checkpoints SET CP2_Arrivale='".$cp."00' WHERE Team='".$Team."';
如果要将团队列添加为主键,请尝试:

ALTER TABLE checkpoints ADD PRIMARY KEY(Team);

INSERT将始终创建新行(或错误输出)。根据您的表格结构,您可以执行以下操作:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";
但是,这需要团队列是唯一索引或主键。如果不是这样,则需要对表进行某种检查,以确定是要插入还是要更新,然后运行现有的insert语句,或者像这样运行update语句:

$sql="UPDATE checkpoints SET CP2_Arrivale='".$cp."00' WHERE Team='".$Team."';
如果要将团队列添加为主键,请尝试:

ALTER TABLE checkpoints ADD PRIMARY KEY(Team);

INSERT将始终创建新行(或错误输出)。根据您的表格结构,您可以执行以下操作:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";
但是,这需要团队列是唯一索引或主键。如果不是这样,则需要对表进行某种检查,以确定是要插入还是要更新,然后运行现有的insert语句,或者像这样运行update语句:

$sql="UPDATE checkpoints SET CP2_Arrivale='".$cp."00' WHERE Team='".$Team."';
如果要将团队列添加为主键,请尝试:

ALTER TABLE checkpoints ADD PRIMARY KEY(Team);

INSERT将始终创建新行(或错误输出)。根据您的表格结构,您可以执行以下操作:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";
但是,这需要团队列是唯一索引或主键。如果不是这样,则需要对表进行某种检查,以确定是要插入还是要更新,然后运行现有的insert语句,或者像这样运行update语句:

$sql="UPDATE checkpoints SET CP2_Arrivale='".$cp."00' WHERE Team='".$Team."';
如果要将团队列添加为主键,请尝试:

ALTER TABLE checkpoints ADD PRIMARY KEY(Team);

首先,据我所知,您可以将
Team
列定义为主键(或唯一键)。 然后您可以使用以下语句:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival)
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival = '".$cp."00';
在这种情况下,如果没有这样的
Team
或在其他情况下更新
CP2\u到达
,您将插入新行。 您可以在此处阅读更多关于此的信息:

您还可以使用
REPLACE
()代替
INSERT
(这也需要主键/唯一键):


首先,据我所知,您可以将
Team
列定义为主键(或唯一键)。 然后您可以使用以下语句:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival)
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival = '".$cp."00';
在这种情况下,如果没有这样的
Team
或在其他情况下更新
CP2\u到达
,您将插入新行。 您可以在此处阅读更多关于此的信息:

您还可以使用
REPLACE
()代替
INSERT
(这也需要主键/唯一键):


首先,据我所知,您可以将
Team
列定义为主键(或唯一键)。 然后您可以使用以下语句:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival)
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival = '".$cp."00';
在这种情况下,如果没有这样的
Team
或在其他情况下更新
CP2\u到达
,您将插入新行。 您可以在此处阅读更多关于此的信息:

您还可以使用
REPLACE
()代替
INSERT
(这也需要主键/唯一键):


首先,据我所知,您可以将
Team
列定义为主键(或唯一键)。 然后您可以使用以下语句:

$sql="INSERT INTO checkpoints (Team, CP2_Arrival)
VALUES (
 '".$Team."',
 '".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival = '".$cp."00';
在这种情况下,如果没有这样的
Team
或在其他情况下更新
CP2\u到达
,您将插入新行。 您可以在此处阅读更多关于此的信息:

您还可以使用
REPLACE
()代替
INSERT
(这也需要主键/唯一键):


谢谢大家。我现在让它工作了。首先,我将编码改为大多数人所建议的(见下文),还截断了tabke,然后将Team作为主键。测试了这个,现在可以工作了

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
'".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";

谢谢大家。我现在让它工作了。首先,我将编码改为大多数人所建议的(见下文),还截断了tabke,然后将Team作为主键。测试了这个,现在可以工作了

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
'".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";

谢谢大家。我现在让它工作了。首先,我将编码改为大多数人所建议的(见下文),还截断了tabke,然后将Team作为主键。测试了这个,现在可以工作了

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
'".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";

谢谢大家。我现在让它工作了。首先,我将编码改为大多数人所建议的(见下文),还截断了tabke,然后将Team作为主键。测试了这个,现在可以工作了

$sql="INSERT INTO checkpoints (Team, CP2_Arrival) 
VALUES (
 '".$Team."',
'".$cp."00' 
) ON DUPLICATE KEY UPDATE CP2_Arrival='".$cp."00'";


你需要做一个更新,而不是插入。我把它改成了更新,现在我得到了一个错误:你的SQL语法有一个错误;检查与您的MySQL服务器版本相对应的手册,以了解在第1行中使用接近“INTO checkpoints(Team,CP2_Arrival)值('6','115900')”的正确语法。对于我来说,您需要执行一个select,if元素present来更新该行,否则创建一个新行,并且更新为update table SET field=value,field=value WHERE etc etc etc etc当您进行更新时,还需要传递id,例如:WHERE id=9您需要进行更新,而不是插入。我已将其更改为更新,现在收到错误:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以了解在第1行中使用接近“INTO checkpoints(Team,CP2_Arrival)值('6','115900')”的正确语法。对于我来说,您需要执行一个select,if元素present来更新该行,否则创建一个新行,并且更新为update table SET field=value,field=执行更新时的值