在愉快地构建三个复杂的表后,我在两个小表上遇到“无效参数”错误。我意识到这是一个高度重复的问题。我已经在网上和其他地方检查了几十个答案。
我已经从数据库剪切并粘贴了名称,以便100%确定我没有错过任何拼写错误。我使用了区分大小写的搜索。我没有在占位符中使用任何被禁止的字符,我没有使用任何保留字。我有三重和四重检查,占位符匹配。我有var_dump
ed和echo
ed以及所有应有的外观。
我已经将字符串转换为整数,尽管在以前的表中不需要这样。我确信这很简单,但我已经坚持了大约六个小时,只是看不出我错在哪里。由于两个简单的表都有问题我重新启动并重新启动但没有。我必须假设我做了一些愚蠢的事情,但我真的看不到它。
if ($_GET ['randomTime']== "yes") {
$sql = "INSERT INTO randomTime (
transmissionProgramID,
numberOfTimes,
minimumGap,
randomTimeType,
lastUpdate
) VALUES (
:transmissionProgramID,
:numberOfTimes,
:minimumGap,
:randomTimeType,
:lastUpdate
);";
$statement = $pdo->prepare($sql);
$numberOfTimes = intval($numberOfTimes);
$minimumGap = intval($minimumGap);
$transmissionProgramID = intval($transmissionProgramID);
var_dump($transmissionProgramID,$numberOfTimes,$randomTimeType, $minimumGap,$lastUpdate);
$statement->bindValue(':transmissionProgramID,', $transmissionProgramID);
$statement->bindValue(':numberOfTimes,', $numberOfTimes);
$statement->bindValue(':minimumGap,', $minimumGap);
$statement->bindValue(':randomTimeType,', $randomTimeType);
$statement->bindValue(':lastUpdate', $lastUpdate);
$result = $statement->execute();
$randomTimeID = $pdo->lastInsertId();
}
该表非常简单
CREATE TABLE `randomTime` (
`randomTimeID` INT(11) NOT NULL AUTO_INCREMENT,
`numberOfTimes` TINYINT(4) NOT NULL DEFAULT '1',
`minimumGap` SMALLINT(6) NOT NULL DEFAULT '60',
`randomTimeType` ENUM('average','fixed','maximum') NULL DEFAULT 'fixed',
`transmissionProgramID` INT(11) NOT NULL,
`lastUpdate` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`randomTimeID`),
UNIQUE INDEX `randomTimeID` (`randomTimeID`),
INDEX `FK_randomTime_transmissionProgram` (`transmissionProgramID`),
CONSTRAINT `FK_randomTime_transmissionProgram` FOREIGN KEY
(`transmissionProgramID`) REFERENCES `transmissionProgram` (`transmissionProgramID`)
)
var_dump产生它应该的东西,例如:
string(3) "131" string(1) "2" string(7) "average" int(200) string(19) "2016-03-01 14:36:42"
之前我对所有内容intval
进行了操作,现在显示
int(137) int(2) string(7) "average" int(60) string(19) "2016-03-01 17:33:32"
答案 0 :(得分:2)
逗号不是命名参数的一部分。那个分隔符占位符/值。
您的代码应为:
$statement->bindValue(':transmissionProgramID', $transmissionProgramID);
$statement->bindValue(':numberOfTimes', $numberOfTimes);
$statement->bindValue(':minimumGap', $minimumGap);
$statement->bindValue(':randomTimeType', $randomTimeType);
$statement->bindValue(':lastUpdate', $lastUpdate);