gpt4 book ai didi

php - 通过 PHP 插入/更新 MySQL 表,行将更新但不会插入。

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:32 25 4
gpt4 key购买 nike

我在 PHP 方面不是很有经验,如果有任何帮助,我将不胜感激!我正在使用 HTTP Post 向我的服务器发送用户名、经度和纬度。我首先检查用户是否存在于 user_info 表中。如果是这样,我会尝试使用该用户名更新 maps_user_location 表。我想要发生的是,如果查询失败,由于在 maps_user_location 表中找不到用户名,那么我希望添加它。我试图用下面的代码来做到这一点。

$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);

mysql_select_db($database_localhost, $localhost);

$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
$username = $_POST['username'];

if ($latitude != 0 && $longitude != 0) {
$query_userCheck = "SELECT * FROM user_info WHERE login_username = '".$username."';";
if ( mysql_query($query_userCheck) ) {
$query_updateLocation = "UPDATE `maps_user_location` SET `lat` = '".$latitude."',`long` = '".$longitude."' WHERE
`login_username` = '".$username."';";
if ( !mysql_query($query_updateLocation) ){
$query_newLocation = "INSERT INTO `maps_user_location` ( `id` ,`login_username` ,`lat` ,`long` ,`track`)
VALUES ( NULL , '".$username."', '".$latitude."', '".$longitude."', '0');";

mysql_query($query_newLocation);
}

}
}

当我执行代码时,它顺利通过。问题是,如果用户名不存在,则永远不会插入一行,但如果用户名存在,则该行会更新。此外,当我手动添加一行时,id 列似乎在每次请求后递增(序列将变为 1,2,3,4,10,11,12...等 [id 5-9 不存在] ).我有一种感觉,它与“$query_updateLocation”中的“WHERE”有关。任何人都知道为什么会发生这种情况?

最佳答案

您可以在单个查询中简单地执行此操作,使用 INSERT...ON DUPLICATE KEY UPDATE

INSERT INTO  maps_user_location ( login_username , lat, long, track)
VALUES ('".$username."', '".$latitude."', '".$longitude."', '0')
ON DUPLICATE KEY UPDATE
lat = '".$latitude."' ,
long = '".$longitude."'

但首先,请确保您在 login_username 列上有一个 UNIQUE CONSTRAINT。如果你还没有添加,你可以使用这个命令改变你的表

ALTER TABLE maps_user_location ADD UNIQUE (login_username);

关于php - 通过 PHP 插入/更新 MySQL 表,行将更新但不会插入。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com