Php 更新现有行,而不是在MySQL中创建新行
下面的代码正确地更新了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
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=执行更新时的值