Php 如果更新失败,我应该如何处理INSERT
这段代码现在给了我一些问题。由于某些原因,当您选中复选框进行提交时,它将跳过更新并直接进入插入创建另一个条目,而此时它应该只是更新 有没有更好的方法来处理这样的场景:如果条目不存在,您希望插入Php 如果更新失败,我应该如何处理INSERT,php,mysql,Php,Mysql,这段代码现在给了我一些问题。由于某些原因,当您选中复选框进行提交时,它将跳过更新并直接进入插入创建另一个条目,而此时它应该只是更新 有没有更好的方法来处理这样的场景:如果条目不存在,您希望插入 if(isset($_POST['R_domain'])){ $_reseller="20217"; $_DOMAIN=$_POST['R_domain']; $_COMPANY_NAME=$_POST['company_name']; $_COMPANY_EMAILS=$
if(isset($_POST['R_domain'])){
$_reseller="20217";
$_DOMAIN=$_POST['R_domain'];
$_COMPANY_NAME=$_POST['company_name'];
$_COMPANY_EMAILS=$_POST['company_email'];
$_PHONE_NUMBER=$_POST['phone_number'];
$_ADDRESS=$_POST['street_address'];
$_CITY=$_POST['city'];
$_STATE=$_POST['state'];
$_ZIPCODE=$_POST['zipcode'];
if(isset($_POST['hmbill'])) {
$_HMBill = "1";
}
else if(!isset($_POST['hmbill'])) {
$_HMBill = "0";
}
$_DEPT="NA";
$conn = mysqli_connect("", "", "", "");
$_sql_update="UPDATE company SET DOMAIN='$_DOMAIN', COMPANY_NAME='$_COMPANY_NAME', COMPANY_EMAILS='$_COMPANY_EMAILS', PHONE_NUMBER='$_PHONE_NUMBER', ADDRESS='$_ADDRESS', CITY='$_CITY', ZIPCODE='$_ZIPCODE',STATE='$_STATE',DEPT='$_DEPT',HMBILL='$_HMBill' WHERE `DOMAIN` = '$_DOMAIN'";
mysqli_query($conn, $_sql_update);
if(mysqli_affected_rows($conn)>0){}
else {
$_sql_insert = "INSERT INTO `company` (ID,RID,DOMAIN,COMPANY_NAME,COMPANY_EMAILS,PHONE_NUMBER,ADDRESS,CITY,ZIPCODE,STATE,DEPT,HMBILL) VALUES('','$_reseller','$_DOMAIN','$_COMPANY_NAME','$_COMPANY_EMAILS','$_PHONE_NUMBER','$_ADDRESS','$_CITY','$_ZIPCODE','$_STATE','$_DEPT','$_HMBill')";
mysqli_query($conn, $_sql_insert);
}
我认为现在发生的是,在更新查询之后检查是否有行被更新。如果列中的所有数据在更新后保持不变,则
mysqli\u impacted\u rows
函数将返回0,从而将代码移动到插入查询
您应该做的是执行选择
查询以检查记录是否存在WHERE DOMAIN='$\u DOMAIN'
。如果是,则执行更新,否则执行插入。将当前的if-else
修改为此。
例如:我认为现在发生的是,在更新查询之后检查是否有行被更新。如果列中的所有数据在更新后保持不变,则
mysqli\u impacted\u rows
函数将返回0,从而将代码移动到插入查询
您应该做的是执行选择
查询以检查记录是否存在WHERE DOMAIN='$\u DOMAIN'
。如果是,则执行更新,否则执行插入。将当前的if-else
修改为此。
例如:如果要在记录存在时更新信息,则可以在SQL中使用“ON replicate”关键字。以下是一个例子:
INSERT INTO
`company`
(ID, RID, DOMAIN, COMPANY_NAME, COMPANY_EMAILS, PHONE_NUMBER, ADDRESS, CITY, ZIPCODE, STATE, DEPT, HMBILL)
VALUES(
NULL,
'$_reseller',
'$_DOMAIN',
'$_COMPANY_NAME',
'$_COMPANY_EMAILS',
'$_PHONE_NUMBER',
'$_ADDRESS',
'$_CITY',
'$_ZIPCODE',
'$_STATE',
'$_DEPT',
'$_HMBill'
)
ON DUPLICATE KEY UPDATE
`ADDRESS` = VALUES('$_ADDRESS'),
`CITY` = VALUES(`$_CITY`),
`ZIPCODE` = VALUES(`$_ZIPCODE`)
如果此插入重复,则此SQL将更新地址、城市和zipcode。当然,您应该根据您的需要对SQL代码进行更改
我希望这会有所帮助。如果要更新记录存在时的信息,则可以在SQL中使用“ON replicate”关键字。以下是一个例子:
INSERT INTO
`company`
(ID, RID, DOMAIN, COMPANY_NAME, COMPANY_EMAILS, PHONE_NUMBER, ADDRESS, CITY, ZIPCODE, STATE, DEPT, HMBILL)
VALUES(
NULL,
'$_reseller',
'$_DOMAIN',
'$_COMPANY_NAME',
'$_COMPANY_EMAILS',
'$_PHONE_NUMBER',
'$_ADDRESS',
'$_CITY',
'$_ZIPCODE',
'$_STATE',
'$_DEPT',
'$_HMBill'
)
ON DUPLICATE KEY UPDATE
`ADDRESS` = VALUES('$_ADDRESS'),
`CITY` = VALUES(`$_CITY`),
`ZIPCODE` = VALUES(`$_ZIPCODE`)
如果此插入重复,则此SQL将更新地址、城市和zipcode。当然,您应该根据您的需要对SQL代码进行更改
我希望这能有所帮助。您在哪里检查复选框条件?您的脚本甚至有使用任何人都知道的风险,如果其他人使用的话?外部IF或内部IF???您在哪里检查复选框条件?您的脚本甚至有可能使用任何人都知道该IF或其他IF属于哪个的脚本?外部IF还是内部IF???