Este é um exemplo em que o uso de declarações preparadas realmente poupa alguns problemas.
No MySQL, para inserir um valor nulo, você deve especificá-lo em
INSERT
tempo ou deixe o campo de fora que requer ramificação adicional:INSERT INTO table2 (f1, f2)
VALUES ('String Value', NULL);
No entanto, se você quiser inserir um valor nesse campo, agora você deve ramificar seu código para adicionar as aspas simples:
INSERT INTO table2 (f1, f2)
VALUES ('String Value', 'String Value');
Declarações preparadas automaticamente fazem isso por você. Eles sabem a diferença entre
string(0) ""
e null
e escreva sua consulta adequadamente:$stmt = $mysqli->prepare("INSERT INTO table2 (f1, f2) VALUES (?, ?)");
$stmt->bind_param('ss', $field1, $field2);
$field1 = "String Value";
$field2 = null;
$stmt->execute();
Ele escapa de seus campos para você, garante que você não esqueça de vincular um parâmetro. Não há razão para ficar com o
mysql
extensão. Use mysqli
e são declarações preparadas
em vez de. Você vai se salvar de um mundo de dor.