【发布时间】:2014-11-06 13:16:33
【问题描述】:
我遇到了一个非常奇怪的问题,有一个我以前从未见过的错误。
这是我的代码:
<?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;
【问题讨论】:
-
请向我们展示您的表格结构。
-
preferenze_utenti 的表定义是什么?
-
preferenze中的列nome是什么类型? -
@u_mulder 是一个字符串。
-
我已经添加了两个表的 sql 导出。
标签: php mysql sql-insert