Could anyone tell me why my insert2 function is returning null after insertion? it should be returning the string with the success message.
<?php
require_once 'conexao.php';
$con = new Conexao();
function insert($dados, $tabela, $campo_unico) : string{
global $con;
//Verifica se tem algum campo que tenha que ser único no BD
if(is_null($campo_unico)) {
insert2($dados, $tabela);
}else{ //Caso tenha verifica se já existe algum registro
$sql = "SELECT * FROM ".$tabela." WHERE ".$campo_unico."=:".$campo_unico;
$select = $con->conectar()->prepare($sql);
if(is_numeric($dados[$campo_unico])){
$select->bindValue(":".$campo_unico, $dados[$campo_unico], PDO::PARAM_INT);
}else {
$select->bindValue(":".$campo_unico, $dados[$campo_unico], PDO::PARAM_STR);
}
$select->execute();
if( ($select->rowCount()) > 0) {
return "O ".$campo_unico." informado já existe em nossos registros";
}else {
insert2($dados, $tabela);
}
}
}
function insert2($dados, $tabela) : string{
global $con;
$i = 0;
$sql = "INSERT INTO " . $tabela . " (";
foreach ($dados as $key => $valor) {
if ($i == count($dados)-1) {
$sql .= " ".$key." ";
} else {
$sql .= " ".$key.", ";
}
$i++;
}
$sql .= ")";
$sql .= " values (";
$i = 0;
foreach ($dados as $key => $valor) {
if ($i == count($dados)-1) {
$sql .= " :".$key." ";
} else {
$sql .= " :".$key.", ";
}
$i++;
}
$sql .= ")";
$insert = $con->conectar()->prepare($sql);
foreach ($dados as $key => $valor) {
if (is_numeric($valor)) {
$insert->bindValue(":$key", $valor, PDO::PARAM_INT);
} else {
$insert->bindValue(":$key", $valor, PDO::PARAM_STR);
}
}
if ($insert->execute()) {
return "Registro inserido com sucesso";
} else {
return $insert->errorInfo();
}
}
The error you are giving is this:
Fatal error: Uncaught TypeError: Return value of insert () must be string type, none returned in ...: 34
Which is precisely because the function return is being null Stack trace: