FS
INSERT MANUAL
Pessoal, estou criando um sistema para importação de arquivo CSV para o Banco de dados MySQL, porém ao fazer
o upload do arquivo da um erro que já sei que é no insert só não sei o que estou errando neste insert, segue abaixo o meu código caso alguém possa me ajudar.
Observação: Se eu colocar o insert desta forma ele aceita:
INSERT INTO importacao (nome,telefone) VALUES (jose,6999998888)
******************************************************************************
public function onUpload($param)
{
//var_dump($param['nome_arquivo']);
try
{
// connection info
$db = array();
$db['host'] = '192.168.6.240';
$db['port'] = '3306';
$db['name'] = 'AppLabin';
$db['user'] = 'root';
$db['pass'] = '123456';
$db['type'] = 'mysql';
TTransaction::open(NULL, $db); // open transaction
$conn = TTransaction::get(); // get PDO connection
$nome_arquivo = 'tmp/' . $param['nome_arquivo'];
$object = fopen($nome_arquivo, 'r');
while(($dados = fgetcsv($object, 1000, ";")) !== FALSE)
{
$result = $conn->query ("INSERT INTO importacao (nome,telefone) VALUES ($dados[0],$dados[1])");
}
fclose($object);
TTransaction::close(); // close transaction
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
o upload do arquivo da um erro que já sei que é no insert só não sei o que estou errando neste insert, segue abaixo o meu código caso alguém possa me ajudar.
Observação: Se eu colocar o insert desta forma ele aceita:
INSERT INTO importacao (nome,telefone) VALUES (jose,6999998888)
******************************************************************************
public function onUpload($param)
{
//var_dump($param['nome_arquivo']);
try
{
// connection info
$db = array();
$db['host'] = '192.168.6.240';
$db['port'] = '3306';
$db['name'] = 'AppLabin';
$db['user'] = 'root';
$db['pass'] = '123456';
$db['type'] = 'mysql';
TTransaction::open(NULL, $db); // open transaction
$conn = TTransaction::get(); // get PDO connection
$nome_arquivo = 'tmp/' . $param['nome_arquivo'];
$object = fopen($nome_arquivo, 'r');
while(($dados = fgetcsv($object, 1000, ";")) !== FALSE)
{
$result = $conn->query ("INSERT INTO importacao (nome,telefone) VALUES ($dados[0],$dados[1])");
}
fclose($object);
TTransaction::close(); // close transaction
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
Quando eu uso o var_dump para verificar o que esta vindo na variável ele me mostra desta forma,
array(2) { [0]=> string(4) "Nome" [1]=> string(8) "Telefone" }
array(2) { [0]=> string(5) "Pedro" [1]=> string(11) "69992086175" }
array(2) { [0]=> string(4) "Jos�" [1]=> string(11) "69333334444" }
array(2) { [0]=> string(8) "Fernando" [1]=> string(11) "69222222222" }
ou seja, as informações ao meu ver esta passando normal, não esta aceitando na linha do insert.
Qual o erro?
Se eu colocar o insert desta forma ele aceita:
INSERT INTO importacao (nome,telefone) VALUES (jose,6999998888)
da forma que estou usando apresenta este erro:
SQLSTATE[HY000]: General error: 1366 Incorrect string value: 'xE9' for column 'nome' at row 1
Provavelmente seja erro de charset. Confira o charset do arquivo e do banco ou tente "transformar" o nome com "utf8_encode/utf8_decode" antes de gravar.
Obrigado Nataniel era isso mesmo.