Santos54 Posted February 18, 2022 at 12:55 PM Report Share #625429 Posted February 18, 2022 at 12:55 PM 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 More sharing options...
Rui Carlos Posted February 18, 2022 at 01:09 PM Report Share #625430 Posted February 18, 2022 at 01:09 PM Verifica o resultado de $stmt = $conn->prepare($INSERT). A query que tens parece-me estar errada, o que deve fazer que o prepare falhe, e devolva um booleano, o que causa o erro da linha seguinte. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Santos54 Posted February 18, 2022 at 01:11 PM Author Report Share #625431 Posted February 18, 2022 at 01:11 PM E entao como corrijo? Ja tentei de tudo Link to comment Share on other sites More sharing options...
Rui Carlos Posted February 18, 2022 at 01:18 PM Report Share #625432 Posted February 18, 2022 at 01:18 PM 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. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
washalbano Posted February 18, 2022 at 01:29 PM Report Share #625433 Posted February 18, 2022 at 01:29 PM Olá! 33 minutes ago, Santos54 said: $INSERT = "INSERT Into registoo (NmUtilizador , Password ,Email)values(0,?,?,?)"; Só remover aquele zero dali 1 Report Link to comment Share on other sites More sharing options...
washalbano Posted February 18, 2022 at 01:32 PM Report Share #625434 Posted February 18, 2022 at 01:32 PM (edited) Para ver sempre esse tipo de erro use um die ali, assim: $stmt = $conn->prepare($INSERT) or die($conn->error); Escrevi um exemplo verificável e testável: https://we.tl/t-WVOlFepAlo Edited February 18, 2022 at 01:36 PM by washalbano Link to comment Share on other sites More sharing options...
Ivo Vicente Posted February 19, 2022 at 06:46 PM Report Share #625437 Posted February 19, 2022 at 06:46 PM 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 More sharing options...
Santos54 Posted February 20, 2022 at 05:42 PM Author Report Share #625439 Posted February 20, 2022 at 05:42 PM Obrigado gente de facto era esse 0 que estava lá a mais Voces sao os maiores Grande Abraço Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now