PHP/MySQL无法插入到
我面临着一个非常奇怪的问题,有一个我从未见过的错误 这是我的代码:PHP/MySQL无法插入到,php,mysql,sql-insert,Php,Mysql,Sql Insert,我面临着一个非常奇怪的问题,有一个我从未见过的错误 这是我的代码: <?php funcion addPref($nome, $uid, $valore){ $SQL = "INSERT INTO preferenze_utenti (idPreferenza, idUtente, value) VALUES ((SELECT id FROM preferenze WHERE nome = ?), ?, ?)"; $stmt = $GLOBALS["db"]->p
<?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;
}
?>
请注意,“true”
是一个字符串,因为这个表接受多种类型的数据,所以我只是这样使用它
问题是,实际上函数返回的总是true,并且我没有得到它的新db记录。
我已经尝试直接在PHPMyAdmin中运行查询,效果非常好。
我注意到我从MySQL得到了以下警告:
截断了不正确的双精度值:“css\u动画”
我哪里做错了
表:
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;
使用
时不要使用值
,请按此处所示选择
:
$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 = ?), ?, ?)";
请告诉我们您的表结构。preferenze_utenti的表定义是什么?preferenze中的列
nome
是什么类型?@u_mulder是一个字符串。我添加了两个表的sql导出。它工作了!我刚刚用这个查询重写了代码,并实际运行了。使用值和不使用值有什么区别?@DarioEmerson这是一个MySQL语法标准,如果要插入的数据需要通过SELECT
语句获取,我们决不能使用VALUES
。我不知道这一点,它一直在使用,而且从来没有问题。谢谢你的帮助!
$SQL = "INSERT INTO preferenze_utenti (idPreferenza, idUtente, value)
((SELECT id FROM preferenze WHERE nome = ?), ?, ?)";