Quebrando Linha SQL
Olá gente,
Um CRUD - PHP 7, PDO - MySQL
Por favor, não deve ser coincidência, considerando que sempre que digito um **nome de um campo** na linha da **sintaxe** tanto do **INSERT INTO** e do **"UPDATE**, o resultado mostra erro.
Acompanhem, por favor, o seguinte:
Essa é linha do "UPDATE", onde digitei mais um campo na SQL, OU SEJA, ***n_autor = :n_autor***
***E, com isso, inicia a quebra de linha da sintaxe:***
"UPDATE $this->tabela SET nome = :nome, email = :email, n_ativ = :n_ativ, n_livro = :n_livro,
n_autor = :n_autor WHERE id = :id";
Tentei alterar um registro e vejam o resultado:
>
Citar
Notice: Undefined index: $n_autor in C:\wamp\www\phpoo2\metadados\Index.php on line 89
Call Stack
#
Time
Memory
Function
Location
1
0.0005
378144
{main}( )
...\Index.php:0
( ! ) Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'n_autor' cannot be null in C:\wamp\www\phpoo2\classes\Usuarios.php on line 60
( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'n_autor' cannot be null in C:\wamp\www\phpoo2\classes\Usuarios.php on line 60
Call Stack
#
Time
Memory
Function
Location
1
0.0005
378144
{main}( )
...\Index.php:0
2
0.0051
402640
Usuarios->update( )
...\Index.php**:**98
3
0.0065
417672
[execute](http://www.php.net/PDOStatement.execute) ( )
...\Usuarios.php**:**60
A linha 89 do index.php é:
$n_autor = $_POST['$n_autor'];
Que é justamente a nome do campo que digitei na sintaxe do ***UPDATE.***
A linha 60 de *Usuarios.php* onde tem as *function* que executa o ***UPDATE*** é:
return $stm->execute();
Agora vejam a sintaxe do comando*** UPDATE*** com a linha quebrando e incluindo o ***\n"*** :
$sql = "UPDATE $this->tabela SET nome = :nome, email = :email, n_ativ = :n_ativ, n_livro = :n_livro, n_autor = :n_autor\n"
. "WHERE id = :id";
Se eu retirar dessa linha*** n_autor = :n_autor ***a linha não é quebrada e o resultado é a Alteração do registro com sucesso.
Diante disso, mas foi o que eu aprendi, que a na quebra de linha em PHP, deve ser colocado no final da quebra*** \n"*** e inicia a outra com ***.*** (concatenar) e abrir*** "*** no final. Ficando linha da sintaxe ***SQL UPDATE ***dessa forma no meu caso:
$sql = "UPDATE $this->tabela SET nome = :nome, email = :email, n_ativ = :n_ativ, n_livro = :n_livro,\n"
. "n_autor = :n_autor WHERE id = :id";
O erro é o mesmo. **Com isso acredito que estou errando ao quebrar a linha da sintaxe.**
Adianto que já observei o banco de dados e não é afetado com a Alteração.
Obrigado.Discussão (0)
Carregando comentários...