Jump to content

Fatal error: Uncaught Error: Call to a member function bind_param() on bool


Santos54

Recommended Posts

Boas tardes estou a desenvolver um projeto final  e aparece me o seguinte erro

Citação

Fatal error: Uncaught Error: Call to a member function bind_param() on bool in D:\xampp\htdocs\site\validarrregisto.php:41 Stack trace: #0 {main} thrown in D:\xampp\htdocs\site\validarrregisto.php on line 41

Ja tentei de tudo mas nao sei como resolver

alguem me poderia ajudar?

 

Aqui está o codigo: 

<?php

$uname1 = $_POST['Nome_Utilizador'];
$paswrd = $_POST['Password'];
$email  = $_POST['Email'];


if (!empty($uname1) || !empty($email) || !empty($paswrd))
{
$host = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "pap";

// Create connection
$conn = new mysqli ($host, $dbusername, $dbpassword, $dbname);

if (mysqli_connect_error()){
  die('Connect Error ('. mysqli_connect_errno() .') '
    . mysqli_connect_error());
}
else{
  $SELECT = "SELECT Nome_Utilizador From login Where Nome_Utilizador = ?";
  $INSERT = "INSERT Into registoo (NmUtilizador , Password ,Email)values(0,?,?,?)";

//Prepare statement
     $stmt = $conn->prepare($SELECT);
     $stmt->bind_param("s", $email);
     $stmt->execute();
     $stmt->bind_result($email);
     $stmt->store_result();
     $rnum = $stmt->num_rows;

     //checking username
      if ($rnum==0) {
      $stmt->close();
      $stmt = $conn->prepare($INSERT);
      $stmt->bind_param("sss", $uname1,$paswrd,$email);
      $stmt->execute();
      echo "Registado com sucesso";
     } else {
      echo "Alguem ja tem esse nome de utlizador , coloque outro";
     }
     $stmt->close();
     $conn->close();
    }
} else {
 echo "Todos os campos sao necessarios";
 die();
}
?>
 
Link to comment
Share on other sites

Tenta executar a query directamente no MySQL: INSERT Into registoo (NmUtilizador , Password ,Email)values(0,?,?,?).  Suspeito que vai falhar, e deve-te dizer o erro que tens.

Não trabalho com PHP, pelo que não sei exactamente a melhor forma de lidar com erros do MySQLi, mas algo como isto também pode ajudar:

if (false === $stmt) {
  die('error on prepare(): ' . $mysqli->error);
}

Em geral, convém validar o resultado de todas as funções que podem falhar.

Link to comment
Share on other sites

Em 18/02/2022 às 13:29, washalbano disse:

Olá!

Só remover aquele zero dali

@washalbano Está correto, aquele zero está a mais, pois faz com que sejam passados 4 valores quando o query apenas tem mapeadas 3 colunas

Na documentação oficial diz o seguinte:

Citação

The number of variables and length of string types must match the parameters in the statement.

Feito é melhor que perfeito

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.