Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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
这个插入语的语法正确吗?(试图使用concat()函数和重复值导入MySQL的PHP脚本)_Php_Mysql_Csv - Fatal编程技术网

这个插入语的语法正确吗?(试图使用concat()函数和重复值导入MySQL的PHP脚本)

这个插入语的语法正确吗?(试图使用concat()函数和重复值导入MySQL的PHP脚本),php,mysql,csv,Php,Mysql,Csv,我正在尝试将数据从csv文件导入空白数据库。我使用的是一个php脚本 目前我并不担心查询的安全性,因为我是唯一使用脚本的人。我刚刚为自己创建了一个小测试脚本 csv文件包含重复的项 它不会插入任何内容,错误日志也不会告诉我任何内容 这是我的疑问: if ($data[16] != NULL) { $cursosViejos = ', '.$data[16]; } else { $cursosViejos = '';

我正在尝试将数据从csv文件导入空白数据库。我使用的是一个php脚本

目前我并不担心查询的安全性,因为我是唯一使用脚本的人。我刚刚为自己创建了一个小测试脚本

csv文件包含重复的项

它不会插入任何内容,错误日志也不会告诉我任何内容

这是我的疑问:

        if ($data[16] != NULL) {
            $cursosViejos = ', '.$data[16];
        } else {
            $cursosViejos = '';
        }
        $x = $data[3];
        $importar = $conectar->prepare('
                INSERT INTO usuarios (
                    deprecated_userID,
                    deprecated_userName,
                    userEmail,
                    deprecated_userCursos,
                    deprecated_userRoles,
                    userApellido,
                    userDNI,
                    userDomicilioCalleyNumero,
                    userDomicilioLocalidad,
                    userEstadoCivil,
                    userEstudios,
                    userProfesion,
                    userTelefono,
                    deprecated_cuestionarioFinal,
                    userAnoticiado,
                    deprecated_entregaDoc
                )
                VALUES (
                ?,
                ?,
                ?,
                concat(?,?), 
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?
                )
                ON DUPLICATE KEY UPDATE
                ');
            $importar->bindParam(1, $data[0]);
            $importar->bindParam(2, $data[1]);
            $importar->bindParam(3, $data[2]);
            $importar->bindParam(4, $x);
            $importar->bindParam(5, $cursosViejos);
            $importar->bindParam(6, $data[4]);
            $importar->bindParam(7, $data[5]);
            $importar->bindParam(8, $data[6]);
            $importar->bindParam(9, $data[7]);
            $importar->bindParam(10, $data[8]);
            $importar->bindParam(11, $data[9]);
            $importar->bindParam(12, $data[10]);
            $importar->bindParam(13, $data[11]);
            $importar->bindParam(14, $data[12]);
            $importar->bindParam(15, $data[13]);
            $importar->bindParam(16, $data[15]);
            $importar->bindParam(17, $data[17]);

        $ok = $importar->execute();
这是将接收数据的表:

CREATE TABLE usuarios(
    userID int unsigned not null auto_increment primary key,
    userEmail char(50) null,
    userApellido char(50) null,
    userNombres char(20) null,
    userDNI char(15) null,
    userPass char(65) null,
    userFechaGeneracion char(25) null,
    userLastLogin char(25) NULL,
    userTelefono char(200) null,
    userCelular char(200) null,
    userDomicilioCalleyNumero char(100) null,
    userDomicilioLocalidad char(80) null,
    userDomicilioProvincia char(80) null,
    userProfesion char(180) null,
    userEstadoCivil char(80) null,
    userEstudios char(80) null,
    nacionalidad char(80) null,
    userAnoticiado char(80) null,
    docFoto char(100) null,
    docDNI char(100) null,
    docCertif char(100) null,
    docVerificada int(1) not null DEFAULT '0',
    comentariosAdmin text null,
    deprecated_userName char(50) null UNIQUE,
    deprecated_userID int(6) null,
    deprecated_userStatus int(6) null,
    deprecated_userNode int(6) null,
    deprecated_userRoles char(150) null,
    deprecated_userCursos varchar(7000) null,
    deprecated_entregaDoc char(150) null,
    deprecated_cuestionarioFinal char(150) null,
    userDatosPublicos text null,
    userTelsPublicos varchar(200) null DEFAULT NULL,
    UNIQUE(userEmail)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
有没有语法错误我没有看到?因为我用同一个脚本完成的其他导入确实有效

以下是csv文件中的一些示例数据:

“27”,“卡西亚”mrcasia@yahoo.com.ar, 玛丽亚·罗莎“,,,,,,,,,,,,,,,,,,,,,,,,,,,,” “28”,“阿莱弗雷”dralejandra@gmail.com“,”卡索跨学科 “联盟管理线”、“校友在线、, 在线1“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Arq.Emilio 戈麦斯“eaos@yahoo.com阿Q.埃米利奥·费尔南多 Gómez“,,,,,,,,,,,,,,,,,,,,,,,,,” “27”,“卡西亚”mrcasia@yahoo.com.ar, 玛丽亚·罗莎“,,,,,,,,,,,,,,,,,,,,,,,,,,,,” “27”,“卡西亚”mrcasia@yahoo.com.ar, 玛丽亚·罗莎“,,,,,,,,,,,,,,,,,,,,,,,,,,,,”

更新: 我已将代码放入try/catch中,并显示以下错误:

SQLSTATE[42000]:语法错误或访问冲突:1064


用于构建
不推荐使用的\u userCursos
列的CONCAT语句未对字符串使用任何引号。既然已经参数化了查询的其余部分,为什么不参数化它呢?e、 g.
concat(?),然后

 $importar->bindParam(4, $x);
 $importar->bindParam(5, $cursosViejos);
 //adjust the other param indices which follow...

我找到了答案。以防万一,我会把它贴在这里

问题在于最后更新部分中的语法

不完整:

ON DUPLICATE KEY UPDATE
什么时候应该有确切的更新方法。该语句不完整,因为不存在更新部分。我应该告诉mySQL如何进行更新


.

您知道可以使用mysqlimport导入csv吗?是的,我只是想把它作为一个PHP脚本,用一个INSERT作为概念证明,并学习如何操作。打开
后立即将错误报告添加到文件顶部谢谢提醒,我已经添加了它,但它仍然不会显示任何内容。错误日志也没有说明什么。如果您将$ok转储,它的值是多少?如果你把它缩小到第一个字段,它能工作吗?谢谢你的回答,你是对的,从这个意义上说,我本来应该这样做的。但我更改了代码,错误仍然出现,错误日志为空。