以下是我的表结构:
CREATE TABLE `order` (
`ID` BIGINT(20) NOT NULL AUTO_INCREMENT,
`RenterRole_ID` INT(11) NULL DEFAULT NULL,
`CreationTime` DATETIME NULL DEFAULT NULL,
`BeginRentingDate` DATETIME NULL DEFAULT NULL,
`EndRentingDate` DATETIME NULL DEFAULT NULL,
`TripStartDate` DATETIME NULL DEFAULT NULL,
`TripEndDate` DATETIME NULL DEFAULT NULL,
`DeliveryDetails` VARCHAR(255) NULL DEFAULT NULL,
`ReturningDetails` VARCHAR(255) NULL DEFAULT NULL,
`SpareSpotBatteries` INT(11) NULL DEFAULT NULL,
`spareInReach15Batteries` INT(11) NULL DEFAULT NULL,
`Remarks` TEXT NULL,
`OrdersCenter_ID` INT(11) NOT NULL DEFAULT '100',
`HashedCCNumber` VARCHAR(255) NULL DEFAULT NULL,
`CCExpiration` DATETIME NULL DEFAULT NULL,
`CCHolderName` VARCHAR(255) NULL DEFAULT NULL,
`CreatingController` VARCHAR(255) NULL DEFAULT NULL,
`Debug` BIT(1) NOT NULL DEFAULT b'0',
`TravelInsuranceOffer` BIT(1) NULL DEFAULT b'0',
`DeviceInsurance` BIT(1) NULL DEFAULT b'0',
`OrdersCenterRemarks` TEXT NULL,
`Rivhit` VARCHAR(100) NULL DEFAULT NULL,
`Invoice` VARCHAR(100) NULL DEFAULT NULL,
`Payment` VARCHAR(200) NULL DEFAULT NULL,
PRIMARY KEY (`ID`),
INDEX `FK_OrderOrdersCenter_idx` (`OrdersCenter_ID`),
INDEX `FK_OrderRenterRole_idx` (`RenterRole_ID`),
CONSTRAINT `FK_OrderOrdersCenter` FOREIGN KEY (`OrdersCenter_ID`) REFERENCES `orderscenter` (`ID`),
CONSTRAINT `FK_OrderRenterRole` FOREIGN KEY (`RenterRole_ID`) REFERENCES `renter_role` (`ID`)
)
当我尝试通过以下代码插入数据时:
$query = "INSERT INTO order (RenterRole_ID) VALUES (?)";
$stmt = $mysqli->prepare($query);
if (false === $stmt) {
echo 'prepare() failed: ' . htmlspecialchars($mysqli->error);
die();
}
$stmt->bind_param('i',$newRenterId);
if (false === $bind) {
echo 'bind_param() failed: ' . htmlspecialchars($stmt->error);
die();
}
$stmt->execute();
$newOrderId = $stmt->insert_id;
$stmt->close();
导致以下错误:
prepare()失败:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便使用附近的顺序(RenterRole_ID)VALUES(?)'在第1行
在其他表中,INSERT代码只能处理有问题的订单表。