这让我疯了两天了。
我有一个PHP应用程序,其中有一个客户有很多送货地址。我在更新送货地址时使用替换,但是当我这样做时,它会有效地更新当前送货地址,但删除该客户的每个其他送货地址!
每个地址都有一个Pri-Key AddId。
$sql5 = "replace into address (
addid,
addcustid,
addtype,
address1,
address2,
addcity,
addstate,
addstateother,
addzip,
addcountry,
addnote)
values(
'".$_REQUEST['shipAddId']."',
'".$_REQUEST['custId']."',
's',
'".mysqli_real_escape_string($con,$_REQUEST['shipAdd1'])."',
'".mysqli_real_escape_string($con,$_REQUEST['shipAdd2'])."',
'".mysqli_real_escape_string($con,$_REQUEST['shipCity'])."',
'".mysqli_real_escape_string($con,$_REQUEST['shipState'])."',
'".mysqli_real_escape_string($con,$_REQUEST['otherShipState'])."',
'".mysqli_real_escape_string($con,$_REQUEST['shipZip'])."',
'".mysqli_real_escape_string($con,$_REQUEST['shipCountry'])."',
'".mysqli_real_escape_string($con,$_REQUEST['shipNotes'])."'
)";
在具有结构的表上:
CREATE TABLE `address` (
`addid` int(11) unsigned NOT NULL AUTO_INCREMENT,
`addcustid` int(11) unsigned NOT NULL,
`addtype` enum('b','s') NOT NULL DEFAULT 'b',
`address1` varchar(150) NOT NULL,
`address2` varchar(150) DEFAULT NULL,
`addcity` varchar(150) DEFAULT NULL,
`addstate` varchar(150) DEFAULT NULL,
`addstateother` varchar(150) DEFAULT NULL,
`addzip` varchar(150) DEFAULT NULL,
`addcountry` varchar(150) DEFAULT NULL,
`addnote` tinyblob,
PRIMARY KEY (`addid`),
KEY `add_cust_id_idx` (`addcustid`),
CONSTRAINT `add_cust_id` FOREIGN KEY (`addcustid`) REFERENCES `cust` (`custid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=207 DEFAULT CHARSET=utf8;
没有其他因素受到影响。好像我们说使用$ _REQUEST ['custId']删除所有地址,但提供$ _REQUEST ['shipAddId']的地址除外。
感谢您的任何见解!