Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL无法插入到_Php_Mysql_Sql Insert - Fatal编程技术网

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 = ?), ?, ?)";