MYSql替换删除太多行。

时间:2014-02-12 22:50:59

标签: php mysql

这让我疯了两天了。

我有一个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']的地址除外。

感谢您的任何见解!

0 个答案:

没有答案