Blank space in PHP mySQL insert [closed]

-3

I made inserts into the database with the following SQL:

    $pdo = db_connect();

    $sql = "INSERT INTO 'alunos'
            (
            'matriculaAluno',
            'nomeAluno',
            'apelidoAluno',
            'sexoAluno',
            'paiAluno',
            'maeAluno',
            'OutRespAluno',
            'dataNascAluno',
            'nacionalidadeAluno',
            'naturalidadeAluno',
            'endAluno',
            'bairAluno',
            'cidAluno',
            'estAluno',
            'cepAluno',
            'dataCadastroAluno',
            'dataAtualizacaoAluno',
            'documentosAluno'
            )
            VALUES ('
            $matricula','
            $nome','
            $apelido','
            $sexo','
            $pai','
            $mae','
            $outroresponsavel','
            $dataNascimento','
            $nacionalidade','
            $naturalidade','
            $endereco','
            $bairro','
            $cidade','
            $estado','
            $cep','
            $dataCadastro','
            $dataAtualizacao','
            $documentos
            ')";

$stmt = $pdo->prepare($sql);

$stmt->bindParam(':matricula', $matricula);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':apelido',$apelido);
$stmt->bindParam(':sexo',$sexo);
$stmt->bindParam(':pai',$pai);
$stmt->bindParam(':mae',$mae);
$stmt->bindParam(':outroresponsavel',$outroresponsavel);
$stmt->bindParam(':datanascimento',$dataNascimento);
$stmt->bindParam(':nacionalidade',$nacionalidade);
$stmt->bindParam(':naturalidade',$naturalidade);
$stmt->bindParam(':endereco',$endereco);
$stmt->bindParam(':bairro',$bairro);
$stmt->bindParam(':cidade',$cidade);
$stmt->bindParam(':estado',$estado);
$stmt->bindParam(':cep',$cep);
$stmt->bindParam(':datacadastro',$dataCadastro);
$stmt->bindParam(':dataatualizacao',$dataAtualizacao);
$stmt->bindParam(':documentos',$documentos);




//Executar o sql na conexão
if ($stmt->execute())
{
    header('Location: index.php');
}
else
{
    echo "Erro ao cadastrar";
    print_r($stmt->errorInfo());
}

But when checking in the database by PHPmyadmin I checked that there is spaces before the text inside cadada column: name, where I see for example the name "viola" with a lot of space on the left side.

When I make a select for a table, it's all right. But when I make a select for popular inputs, it looks at that space and presents with all that space inside the input.

How to solve?       

Note:IfyouplacetrimtogetherwiththeselectoftheINDEXINDEFINITEerror.

Somuchtoputanythingin$sqlasSELECTtrim(studentName)fromPAUstudents.

$sql="INSERT INTO 'alunos'
            (
            'matriculaAluno',
            'nomeAluno',
            'apelidoAluno',
            'sexoAluno',
            'paiAluno',
            'maeAluno',
            'OutRespAluno',
            'dataNascAluno',
            'nacionalidadeAluno',
            'naturalidadeAluno',
            'endAluno',
            'bairAluno',
            'cidAluno',
            'estAluno',
            'cepAluno',
            'dataCadastroAluno',
            'dataAtualizacaoAluno',
            'documentosAluno'
            )
            VALUES ('
            $matricula','
            $nome','
            $apelido','
            $sexo','
            $pai','
            $mae','
            $outroresponsavel','
            $dataNascimento','
            $nacionalidade','
            $naturalidade','
            $endereco','
            $bairro','
            $cidade','
            $estado','
            $cep','
            $dataCadastro','
            $dataAtualizacao','
            $documentos
            ')";

$stmt = $pdo->prepare($sql);

$stmt->bindParam(':matricula', $matricula);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':apelido',$apelido);
$stmt->bindParam(':sexo',$sexo);
$stmt->bindParam(':pai',$pai);
$stmt->bindParam(':mae',$mae);
$stmt->bindParam(':outroresponsavel',$outroresponsavel);
$stmt->bindParam(':datanascimento',$dataNascimento);
$stmt->bindParam(':nacionalidade',$nacionalidade);
$stmt->bindParam(':naturalidade',$naturalidade);
$stmt->bindParam(':endereco',$endereco);
$stmt->bindParam(':bairro',$bairro);
$stmt->bindParam(':cidade',$cidade);
$stmt->bindParam(':estado',$estado);
$stmt->bindParam(':cep',$cep);
$stmt->bindParam(':datacadastro',$dataCadastro);
$stmt->bindParam(':dataatualizacao',$dataAtualizacao);
$stmt->bindParam(':documentos',$documentos);
    
asked by anonymous 02.02.2017 / 18:11

3 answers

3

The problem is that your insert does not correctly use the prepared statements when sending the values directly with this indentation several blanks and line breaks are going, pay attention where the single quotation marks start and end.

        VALUES ('
        $matricula','
        $nome','

Basically remove the variables and pass the placeholders in place. Just do a replace in ide or code editor. Change the occurrences of the dollar sign ( $ ) by two points ( : ) and without single quotation marks bindParam/bindValue already escapes the values.

Should be:

        VALUES (
        :matricula,
        :nome,

Related:

What's the difference between bindParam and bindValue?

    
02.02.2017 / 18:27
0

Use trim() in PHP, not SQL query. Must solve! You can debug before the variable enters the PDO also to see where these spaces are coming from.

    
02.02.2017 / 18:28
0

Suggestion to change:

Change your query to

$sql = "INSERT INTO 'alunos'
            (
            'matriculaAluno',
            'nomeAluno',
            'apelidoAluno',
            'sexoAluno',
            'paiAluno',
            'maeAluno',
            'OutRespAluno',
            'dataNascAluno',
            'nacionalidadeAluno',
            'naturalidadeAluno',
            'endAluno',
            'bairAluno',
            'cidAluno',
            'estAluno',
            'cepAluno',
            'dataCadastroAluno',
            'dataAtualizacaoAluno',
            'documentosAluno'
            )
            VALUES (
            :matricula,
            :nome,
            :apelido,
            :sexo,
            :pai,
            :mae,
            :outroresponsavel,
            :dataNascimento,
            :nacionalidade,
            :naturalidade,
            :endereco,
            :bairro,
            :cidade,
            :estado,
            :cep,
            :dataCadastro,
            :dataAtualizacao,
            :documentos
            )";

and the bindings for:

$stmt->bindParam(':matricula', $matricula);

$stmt->bindParam(':nome', $nome);
//e assim sucessivamente para os demais campos
    
02.02.2017 / 18:22