如果记录存在,则更新MySql表或使用PHP插入
我必须检查表forex_rates_new中是否存在记录,我需要检查两个标准,即必须比较机构id和货币名称。如果机构id和货币名称相同,则系统必须更新或插入如果记录存在,则更新MySql表或使用PHP插入,php,mysql,Php,Mysql,我必须检查表forex_rates_new中是否存在记录,我需要检查两个标准,即必须比较机构id和货币名称。如果机构id和货币名称相同,则系统必须更新或插入 forex_rates_new id agency_id currency_name rate 1 1111 aaa 1.898 2 2190 aaa 0.787 如果出现值为111的机构id和美元的货币名称,则在数据库中。下次如果用户输入
forex_rates_new
id agency_id currency_name rate
1 1111 aaa 1.898
2 2190 aaa 0.787
如果出现值为111的机构id和美元的货币名称,则在数据库中。下次如果用户输入与USD相同的值111和货币名称,则记录应进入更新模式或插入。这是我的疑问:
INSERT INTO forex_rates_new (`agency_id`,`currency_name`,`rate`,`logo`,`created_at`)
VALUES('".$agency_id."','".$currency_name."','".$rate."','".$logo."', now())
谢谢你的帮助
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
我在这里向您简单演示如何实现这一点。首先,您需要选择数据。类似这样的操作
"SELECT * FROM request WHERE agency_id='$agency_id' ";
INSERT INTO forex_rates_new (`agency_id`,`currency_name`,`rate`,`logo`,`created_at`)
VALUES('".$agency_id."','".$currency_name."','".$rate."','".$logo."', now())
$qry=mysqli_query($con,"SELECT * FROM request WHERE agency_id='$agency_id' ");
$rowCheck=mysqli_num_rows($qry);
if ($rowCheck>0) { // if data exist update the data
$qry=mysqli_query($con,"UPDATE request SET field name='$value' WHERE agency_id='$agency_id'");
}
else{ // insert the data if data is not exist
$qry=mysqli_query($con,"INSERT INTO request (field name) VALUES('$value')");
}
现在检查数据是否存在,并进行更新查询
"UPDATE request SET field name='$value' WHERE agency_id='$agency_id'";
否则就是这样
"SELECT * FROM request WHERE agency_id='$agency_id' ";
INSERT INTO forex_rates_new (`agency_id`,`currency_name`,`rate`,`logo`,`created_at`)
VALUES('".$agency_id."','".$currency_name."','".$rate."','".$logo."', now())
$qry=mysqli_query($con,"SELECT * FROM request WHERE agency_id='$agency_id' ");
$rowCheck=mysqli_num_rows($qry);
if ($rowCheck>0) { // if data exist update the data
$qry=mysqli_query($con,"UPDATE request SET field name='$value' WHERE agency_id='$agency_id'");
}
else{ // insert the data if data is not exist
$qry=mysqli_query($con,"INSERT INTO request (field name) VALUES('$value')");
}
您的代码应该是这样的
"SELECT * FROM request WHERE agency_id='$agency_id' ";
INSERT INTO forex_rates_new (`agency_id`,`currency_name`,`rate`,`logo`,`created_at`)
VALUES('".$agency_id."','".$currency_name."','".$rate."','".$logo."', now())
$qry=mysqli_query($con,"SELECT * FROM request WHERE agency_id='$agency_id' ");
$rowCheck=mysqli_num_rows($qry);
if ($rowCheck>0) { // if data exist update the data
$qry=mysqli_query($con,"UPDATE request SET field name='$value' WHERE agency_id='$agency_id'");
}
else{ // insert the data if data is not exist
$qry=mysqli_query($con,"INSERT INTO request (field name) VALUES('$value')");
}
请记住,给定的代码容易受到sql注入攻击。这是逻辑
只有这不是完整的代码。要避免sql注入攻击,请使用
准备好的发言
如果和存在,则通过检查true
或false
给你
<?php
$dupl = mysqli_query($con, "SELECT * FROM forex_rates_new WHERE currency_name='$agency_id'") or die(mysql_error($con));
$row = mysqli_num_rows($dupl);
if ($row > 0)
{
echo "<script language='javascript'>alert('Exists!!!')</script>";
$stmt1 = $con->prepare("UPDATE forex_rates_new SET column_name=? WHERE column_name=?");
if($stmt1)
{
$stmt1->bind_param('is', $value, $value);
$stmt1->execute();
}
if($stmt1->affected_rows >0)
{
echo "<script language='javascript'>alert('Updated Sucessfully!!!')</script>";
}
else
{
echo "<script language='javascript'>alert('error!!!')</script>";
}
}
$stmt = $con->prepare("INSERT into forex_rates_new VALUES(?,?,?,?, now())
if($stmt)
{
$stmt->bind_param('isis', $currency_name, $agency_id, $rate, $logo);
$stmt->execute();
}
if($stmt->affected_rows >0)
{
echo "<script language='javascript'>alert('Inserted Successfully!!!')</script>";
}
else{
echo "<script language='javascript'>alert('An error occurred!!!')</script>";
}
}
?>
您可以将唯一键
添加到机构id
,货币名称
,然后使用“替换”语法->
无需为Update/Insert语句选择和添加条件。但在本例中,如何比较代理id是否相同和货币名称是否相同?首先使用select查询检查给定代理id
和货币名称是否存在值。如果返回的行数大于0
,则使用上述查询更新else insert。为什么要手动插入ID?最好的做法是让数据库自动分配ID。如果机构\u id
和货币\u name
不相同,但id已经存在,该怎么办?您将运行INSERT
?我建议您的ID自动递增,并仅按ID进行检查。如果ID存在,则更新else insert。不会自动插入任何ID。ID是主键。我想有点混乱。脚本不必比较agency\u id=currency\u name,但如果agency\u id=$agency\u id(传递值)和currency\u name=$currency\u name(传递值),则必须进行比较。如果出现值为111的机构id和美元的货币名称,则在数据库中。下次如果用户输入与USD相同的值111和货币名称,则记录应处于更新模式或插入。请修改我的答案并检查它是否满足您的要求。感谢@Wong占用您的时间。我想这取决于您是否要先执行读取操作,然后执行写入操作。如果不考虑性能,这可能是一个很好的答案:两个标准包括机构id
和货币名称
?