1
首先我知道外键的错误是什么,但是我不知道为什么它会在PDO的PHP代码中发生。1452>外键约束失败PDO PHP
插入功能:
function insert_pedido($cod,$pagamento,$total) {
$id = $cod;
$con = $this->connect();
$data = date("Y/m/d");
$DBH = $con->prepare("INSERT INTO pedido (cod_cliente, data, pagamento, total) VALUES ('?','?','?','?')");
$DBH->bindParam(1,$id);
$DBH->bindParam(2,$data);
$DBH->bindParam(3,$pagamento);
$DBH->bindParam(4,$total);
if ($DBH->execute()) {
return 1;
} else {
print_r($DBH->errorInfo());
}
}
我做的函数调用传递这些参数
$cod = $_POST["cod_cliente"];
$pagamento = $_POST["pagamento"];
$total = $_POST["total"];
而且函数调用:
insert_pedido($cod,$pagamento,$total);
这是接收到的错误:
阵列([0] => 23000 [1] => 1452 [2] =>无法添加或更新的子行,外键约束失败(
empresa
。pedido
,约束fk_cliente
外键(cod_cliente
)参考文献cliente
(cod_cliente
)ON DELETE NO ACTION ON UPDATE NO ACTION))
前面说过,已经我检查已经在phpmyadmin的手动添加的cod_cliente
存在和有效。
好吧,它不能在那里,或不是一个完全匹配的,所以mysql正确拒绝插入。仅仅因为在phpmyadmin中看起来相同的东西并不意味着实际的值。尝试像从客户那里选择导致该错误的确切值相同的值,例如'select * from client where cod_client =?'并绑定完全相同的$ _POST值。 –
不要引用占位符。引用时,'?'是文字'?'。 – chris85
@ chris85是对的,也许你的问题只是占位符,将它改为:'(?,?,?,?)' –