Ir para conteúdo
Fórum Script Brasil
  • 0

PDO insere valores nulos no mysql


fabio_siqueira

Pergunta

Galera bom dia!

 

alguém consegue me ajudar?

Estou tentando importar um arquivo csv para o banco mysql usando PDO.

acontece que ele insere todos os valores como NULL na tabela.

Segue meu código:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "fabio";


    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

	$filename = ($_FILES['arquivocsv2']["tmp_name"]);
$abraArq = fopen($filename,"r");
$import = $conn->prepare("INSERT INTO relatorio (DocumentoSD,Descricao,CodCliente,Cliente,Regiao,DataDocumento,Material,Condicoes,Plano)VALUES (:DocumentoSD, :Descricao, :CodCliente, :Cliente, :Regiao, :DataDocumento, :Material, :Condicoes, :Plano)");

$import->bindValue(':DocumentoSD', $DocumentoSD,PDO::PARAM_STR);
$import->bindValue(':Descricao', $Descricao,PDO::PARAM_STR);
$import->bindValue(':CodCliente', $CodCliente,PDO::PARAM_STR);
$import->bindValue(':Cliente', $Cliente,PDO::PARAM_STR);
$import->bindValue(':Regiao', $Regiao,PDO::PARAM_STR);
$import->bindValue(':DataDocumento', $DataDocumento,PDO::PARAM_STR);
$import->bindValue(':Material', $Material,PDO::PARAM_STR);
$import->bindValue(':Condicoes', $Condicoes,PDO::PARAM_STR);
$import->bindValue(':Plano', $Plano,PDO::PARAM_STR);

while (($items = fgetcsv($abraArq, 2048, ';')) !== FALSE) {

$DocumentoSD = $items[];
$Descricao = $items[4];
$CodCliente = $items[5];
$Cliente = $items[6];
$Regiao = $items[7];
$DataDocumento = $items[10];
$Material = $items[11];
$Condicoes = $items[17];
$Plano = $items[29];
			// Execute prepared query
$import->execute();}
  

?>

 

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde.

Acredito que todas as suas chamadas ao ->bindValue devem estar dentro do while, já que a variável $DocumentoSD, etc, são criadas lá. Algo assim:

while (($items = fgetcsv($abraArq, 2048, ';')) !== FALSE) {
	$DocumentoSD = $items[];
	$Descricao = $items[4];
	$CodCliente = $items[5];
	// adicionar o restante das atribuções

	$import->bindValue(':DocumentoSD', $DocumentoSD,PDO::PARAM_STR);
	$import->bindValue(':Descricao', $Descricao,PDO::PARAM_STR);
	$import->bindValue(':CodCliente', $CodCliente,PDO::PARAM_STR);
	// adicionar o restante dos bindValue

	$import->execute();
}

 

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz isso...e agora ele apresenta o erro: 

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9dito' for column 'Descricao' at row 1 in C:\wamp\www\consumo\pdo_teste_sozinho2.php:35 Stack trace: #0 C:\wamp\www\consumo\pdo_teste_sozinho2.php(35): PDOStatement->execute() #1 {main} thrown in C:\wamp\www\consumo\pdo_teste_sozinho2.php on line 35

 

Ele não está aceitando os caracteres especiais, mas a função do prepare não é exatamente essa de aceitar os acentos e etc?

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade não. Com a função prepare, a consulta é executada em em duas etapas... uma que envia o comando (ou seja, prepara o comando para execução) e outra etapa que envia os valores a serem usados no comando (o bindValue e depois o execute). Essa é a função do prepare, apenas preparar uma consulta que será executada posteriormente, e ela não faz tratamento de valores.

Acho que no seu caso, você teria que converter os valores para utf8 antes de salvar no banco. Tente assim:

$DocumentoSD = utf8_encode($items[]);
$Descricao = utf8_encode($items[4]);
$CodCliente = utf8_encode($items[5]);
// restante das atribuições

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...