Php 用新条目覆盖MYSQL数据库中的条目
我试图在每次有新数据可用时替换MYSQL数据库中以前的条目,我有以下PHP代码,但每次似乎都会添加新条目。请帮忙,谢谢 我试过使用REPLACE,但仍然不起作用,有人能告诉我我做错了什么吗Php 用新条目覆盖MYSQL数据库中的条目,php,mysql,database,replace,Php,Mysql,Database,Replace,我试图在每次有新数据可用时替换MYSQL数据库中以前的条目,我有以下PHP代码,但每次似乎都会添加新条目。请帮忙,谢谢 我试过使用REPLACE,但仍然不起作用,有人能告诉我我做错了什么吗 <?php header('Content-Type: application/json'); $data = json_decode(file_get_contents('php://input'), true); $mysqli = new mysqli("localhost","dbuser
<?php
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'), true);
$mysqli = new mysqli("localhost","dbuser","Pa55uu0Rd","iewdb");
if (mysqli_connect_errno())
{
echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error() ));
return;
}
if(!$data)
{
echo json_encode(array('error' => 'Error input data'));
return;
}
$usernme = $data['usernme'];
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1");
$user_id = $user->fetch_object();
if(!$user_id)
{
$mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');");
$user_id->id = $mysqli->insert_id;
}
if($longitude && $latitude)
{
$mysqli->query("REPLACE INTO Locations (User_id,Longitude, Latitude) VALUES ($user_id->id,$longitude,$latitude);");
}
$mysqli->close();
echo json_encode(array('user_id' => $user_id->id));
逻辑:您可以删除旧条目,然后将新条目添加到数据库中,而不是替换旧条目,以防性能下降
因此,您必须只编写一个删除和插入查询,而不是3个查询逻辑:您可以删除旧条目,然后将新条目添加到数据库中,以确保性能
因此,您必须只编写一个删除和插入查询,而不是3个查询逻辑:您可以删除旧条目,然后将新条目添加到数据库中,以确保性能
因此,您必须只编写一个删除和插入查询,而不是3个查询逻辑:您可以删除旧条目,然后将新条目添加到数据库中,以确保性能
因此,您只需编写一个删除和插入查询…而不是3个查询使用类似于下面的更新查询
UPDATE MyTable
SET User_id = 'USER_ID_VALUE', Longitude='LONGITUDE_VALUE', Latitude='LATITUDE_VALUE'
WHERE SomeOtherColumn LIKE '%PATTERN%'
使用像这样的更新查询
UPDATE MyTable
SET User_id = 'USER_ID_VALUE', Longitude='LONGITUDE_VALUE', Latitude='LATITUDE_VALUE'
WHERE SomeOtherColumn LIKE '%PATTERN%'
使用像这样的更新查询
UPDATE MyTable
SET User_id = 'USER_ID_VALUE', Longitude='LONGITUDE_VALUE', Latitude='LATITUDE_VALUE'
WHERE SomeOtherColumn LIKE '%PATTERN%'
使用像这样的更新查询
UPDATE MyTable
SET User_id = 'USER_ID_VALUE', Longitude='LONGITUDE_VALUE', Latitude='LATITUDE_VALUE'
WHERE SomeOtherColumn LIKE '%PATTERN%'
这是我解决这个问题的方法,效果很好。我决定去更新,你可以看到下面,因为我认为这是最整洁的,谢谢你的帮助
<?php
header('Content-Type: application/json');
//get parameters
$data = json_decode(file_get_contents('php://input'), true);
// Create connection
$mysqli = new mysqli("localhost","dbuser","Pa55w0rd","ewdb");
// Check connection
if (mysqli_connect_errno())
{
echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error() ));
return;
}
if(!$data)
{
echo json_encode(array('error' => 'Error input data'));
return;
}
$usernme = $data['usernme'];
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1");
$user_id = $user->fetch_object();
if(!$user_id)
{
$mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');");
$user_id->id = $mysqli->insert_id;
$mysqli->query("INSERT INTO Locations (User_id) VALUES ($user_id->id);");
}
if($longitude && $latitude)
{
$mysqli->query("UPDATE Locations SET Longitude = $longitude, Latitude = $latitude WHERE User_id = $user_id->id;");
}
/* close connection */
$mysqli->close();
echo json_encode(array('user_id' => $user_id->id));
这是我解决这个问题的方法,效果很好。我决定去更新,你可以看到下面,因为我认为这是最整洁的,谢谢你的帮助
<?php
header('Content-Type: application/json');
//get parameters
$data = json_decode(file_get_contents('php://input'), true);
// Create connection
$mysqli = new mysqli("localhost","dbuser","Pa55w0rd","ewdb");
// Check connection
if (mysqli_connect_errno())
{
echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error() ));
return;
}
if(!$data)
{
echo json_encode(array('error' => 'Error input data'));
return;
}
$usernme = $data['usernme'];
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1");
$user_id = $user->fetch_object();
if(!$user_id)
{
$mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');");
$user_id->id = $mysqli->insert_id;
$mysqli->query("INSERT INTO Locations (User_id) VALUES ($user_id->id);");
}
if($longitude && $latitude)
{
$mysqli->query("UPDATE Locations SET Longitude = $longitude, Latitude = $latitude WHERE User_id = $user_id->id;");
}
/* close connection */
$mysqli->close();
echo json_encode(array('user_id' => $user_id->id));
这是我解决这个问题的方法,效果很好。我决定去更新,你可以看到下面,因为我认为这是最整洁的,谢谢你的帮助
<?php
header('Content-Type: application/json');
//get parameters
$data = json_decode(file_get_contents('php://input'), true);
// Create connection
$mysqli = new mysqli("localhost","dbuser","Pa55w0rd","ewdb");
// Check connection
if (mysqli_connect_errno())
{
echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error() ));
return;
}
if(!$data)
{
echo json_encode(array('error' => 'Error input data'));
return;
}
$usernme = $data['usernme'];
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1");
$user_id = $user->fetch_object();
if(!$user_id)
{
$mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');");
$user_id->id = $mysqli->insert_id;
$mysqli->query("INSERT INTO Locations (User_id) VALUES ($user_id->id);");
}
if($longitude && $latitude)
{
$mysqli->query("UPDATE Locations SET Longitude = $longitude, Latitude = $latitude WHERE User_id = $user_id->id;");
}
/* close connection */
$mysqli->close();
echo json_encode(array('user_id' => $user_id->id));
这是我解决这个问题的方法,效果很好。我决定去更新,你可以看到下面,因为我认为这是最整洁的,谢谢你的帮助
<?php
header('Content-Type: application/json');
//get parameters
$data = json_decode(file_get_contents('php://input'), true);
// Create connection
$mysqli = new mysqli("localhost","dbuser","Pa55w0rd","ewdb");
// Check connection
if (mysqli_connect_errno())
{
echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error() ));
return;
}
if(!$data)
{
echo json_encode(array('error' => 'Error input data'));
return;
}
$usernme = $data['usernme'];
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1");
$user_id = $user->fetch_object();
if(!$user_id)
{
$mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');");
$user_id->id = $mysqli->insert_id;
$mysqli->query("INSERT INTO Locations (User_id) VALUES ($user_id->id);");
}
if($longitude && $latitude)
{
$mysqli->query("UPDATE Locations SET Longitude = $longitude, Latitude = $latitude WHERE User_id = $user_id->id;");
}
/* close connection */
$mysqli->close();
echo json_encode(array('user_id' => $user_id->id));
请注意,没有订单的限制是(相当)没有意义的用户id
是位置
表上的主键还是唯一索引?无论如何,请使用UPDATE
而不是REPLACE
。请注意,不按顺序进行限制是(相当)没有意义的User\u id
是位置表上的主键还是唯一索引?无论如何,请使用UPDATE
而不是REPLACE
。请注意,不按顺序进行限制是(相当)没有意义的User\u id
是位置表上的主键还是唯一索引?无论如何,请使用UPDATE
而不是REPLACE
。请注意,不按顺序进行限制是(相当)没有意义的User\u id
是位置表上的主键还是唯一索引?无论如何,请使用UPDATE
而不是REPLACE
。谢谢您的帮助,我已经使用了UPDATE,它工作正常。我已经在下面实现了您的解决方案。感谢您的帮助,我已经完成了更新,并且运行良好。我已经在下面实现了您的解决方案。感谢您的帮助,我已经完成了更新,并且运行良好。我已经在下面实现了您的解决方案。感谢您的帮助,我已经完成了更新,并且运行良好。我已经在下面实现了您的解决方案。