我面临一个非常奇怪的问题,有一个我从未见过的错误。
这是我的代码:
<?php
funcion addPref($nome, $uid, $valore){
$SQL = "INSERT INTO preferenze_utenti (idPreferenza, idUtente, value)
VALUES ((SELECT id FROM preferenze WHERE nome = ?), ?, ?)";
$stmt = $GLOBALS["db"]->prepare($SQL);
$stmt->bind_param('sis', $nome, $uid, $valore);
return $stmt->execute() ? true : false;
}
?>
我正在使用这样的功能:
addPref("css_animations", 530, "true");
请注意,这"true"
是一个字符串,因为此表将多种类型的数据接收到其中,所以我只是像这样使用它。
问题是实际上该函数始终返回true,而我没有新的数据库记录。我试过直接在PHPMyAdmin中运行查询,并且效果很好。我注意到我收到了来自MySQL的警告:
截断了错误的DOUBLE值:“ css_animations”
我要去哪里错了?
表格:
CREATE TABLE IF NOT EXISTS `preferenze_utenti` (
`idPreferenza` bigint(20) NOT NULL,
`idUtente` bigint(20) NOT NULL,
`value` varchar(256) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `preferenze` (
`id` bigint(20) NOT NULL,
`nome` char(64) NOT NULL,
`def` varchar(128) NOT NULL COMMENT 'Valore default'
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
VALUES
当您SELECT
在此处使用时,请勿使用:
$SQL = "INSERT INTO preferenze_utenti (idPreferenza, idUtente, value)
VALUES ((SELECT id FROM preferenze WHERE nome = ?), ?, ?)";
更改为:
$SQL = "INSERT INTO preferenze_utenti (idPreferenza, idUtente, value)
((SELECT id FROM preferenze WHERE nome = ?), ?, ?)";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句