Ir para o conteúdo
IRONLORD

[PHP] Ajuda mysqli->prepare() Couldn't fetch mysqli

Mensagens Recomendadas

IRONLORD

Boa tarde,

Estou com alguns problemas no meu código, conseguindo efectuar uma query num determinado local do código, mas mais abaixo onde precisa dela, não funciona :/ Ainda sou um pouco nobato no PHP.

Fica aqui a código:

<?php

require("connection/model.php");

$mysqli = new mysqli($host, $username, $password, $db_name);

if ($erro = $mysqli->connect_errno):
   		printf("Erro ao conectar: %s\n", $erro);
    	exit();
endif;


//Validação do ID no URL
	if (isset($_GET['id']) && is_numeric($_GET['id']))
        {

/*		
$comment="Ola";
$id_cand=7;

		$query2 = "INSERT INTO comments (id_cand, comment) values (?,?)";				 
	$stmt = $mysqli ->prepare($query2);
	$stmt -> bind_param ("ds", $id_cand, $comment);
	if(!$stmt ->execute()){
		$code = $stmt->errno; 
		$message = $stmt->error; 
			printf('<p> Erro : %d %s</p>', $code, $message);
			}
*/
$id=$_GET['id'];
//$id=7;
//Executar a consulta

$stmt = $mysqli -> prepare("SELECT * FROM applications WHERE ID=?");

$stmt -> bind_param("s",$id);
$stmt->execute();
$stmt->bind_result($id ,$nForum, $nJogo, $nome, $idade, $eJogo, $eForum, $p1, $p2, $date, $hora, $status);
$stmt->fetch();

$stmt->close();
$mysqli->close();
	}
        else
        // if the 'id' variable isn't set, redirect the user
        {
                header("Location: appl_views.php");
        }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mostrar Candidatura</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<link rel="stylesheet" href="connection/model.php" type="text/css" />
</head>
<body>
<div id="content">
<div class="top_bar"> <a href="appl_views.php">** Candidaturas</a><span style="color:green"><a href="appl_review.php">** Em análise</a></span>		<span style="color:red"><a href="appl_rec.php">** Recusadas</a> </span>
    <a href="#">Sair do Painel de Administração</a></span></div>
<div class="header"><img src="images/logo.png"/></div></div>
<div id="extra">
    <?php 
if($status==3)
{
	printf('<font color="#FF0000"> Candidatura recusada! </font>');
}
elseif($status==2)
{
	printf('<font color="#FF3300"> Candidatura em análise! </font>');
}
else{
	printf('<font color="green"> Candidatura aceite! </font>');}
 ?>
<div id="dados">
    <p align="left" id="pdados">Nick Fórum: <span><?php echo $nForum ?> </span></p></br>
    <p align="left" id="pdados">Nick Jogo: <span><?php echo $nJogo ?> </span></p></br>
    <p align="left" id="pdados">Nome: <span><?php echo $nome ?> </span></p></br>
    <p align="left" id="pdados">Idade: <span><?php echo $idade ?> </span></p></br>
    <p align="left" id="pdados">Experiência de Jogo: <span><?php echo $eJogo ?> </span></p></br>
    <p align="left" id="pdados">Experiência de Fórum: <span><?php echo $eForum ?> </span></p></br>
    <p align="left" id="pdados">Características de um Moderador: <span><?php echo $p1 ?> </span></p></br>
    <p align="left" id="pdados">Razão escolha a Moderador: <span><?php echo $p2 ?> </span></p></br>
</div>
    <form class="reg-form" method='post'>
    <input type="button" name="Voltar" value="Voltar" onclick="location.href='appl_views.php'" />     
    <input type="submit" name="recusar" value="Recusar" /><input type="button" name="aceitar" value="Aceitar" />
    </form>
    </div>
    </br>
    <?php
printf('
<div id="extra">
<div id="dados">');	
$result = getComments($id);	
printf('<table id="newspaper-a" border="0" align="center">');
	printf('<tr><th>User</th>');
	for($i=0; $i<count($result); $i++) {
	$row=$result[$i];
	printf('<tr>');
	printf('<form action="%s" method="post">
		<td>%s</td>
		<td>%s</td>
		</form>',$_SERVER['PHP_SELF'],$row[0], $row[1]);
	printf('</tr>');
		}
	printf('</table>');
printf('</div>');
printf('</div>');
?>
    </br>
    <div id="extra">
    <form class="form" method='post'>
    <label for="escolha">Avaliação da Candidatura</label>
<textarea name="resposta" id="resposta" required></textarea>
    <div class="submit-button">
<input type="submit" name="enviar" value="Enviar" />
    </div>
    </form>
    </div>
</div>
  <div class="footer"><img src="images/logo-gameforge.png"/></div>
  <?php
  $campos=0;
  
  if(isset($_POST['enviar'])){

  if (isset($_POST ['resposta'])){
   $comment= $_POST['resposta'];
      if($comment==''){
          $fnResposta="<img src='images/errorM.png'/> Falta preencher o campo comentário!"."<br/>";}
  else{
	  $campos+=1;
	  $fnResposta="";}
}

$comment= $_POST['resposta'];
$date = date("Y-m-d",strtotime("+0 day"));//Devolve a data de hoje
	$id_cand=$id;
	if($campos==1){
	//insert_comment($id_cand, $comment);}
	$query2 = "INSERT INTO comments (id_cand, comment) values (?,?)";				 
	$stmt = $mysqli ->prepare($query2);
	$stmt -> bind_param ("ds", $id_cand, $comment);
	if(!$stmt ->execute()){
		$code = $stmt->errno; 
		$message = $stmt->error; 
			printf('<p> Erro : %d %s</p>', $code, $message);
			}
	else{
	echo "<div id='extra'>";
	echo "<p align='center'>Preenche todos os campos obrigatórios!</p>"."<br/>";
	if($fnResposta!=''){
		echo $fnResposta."<br/>";
	echo "</div>";}
	}
	$mysqli->close();
	}
}
 else if(isset($_POST['recusar'])){
	 recusar_appl($id);
 }
	function recusar_appl($id){
	global $mysqli;

	$query ="UPDATE applications SET status='3' WHERE id='$id'";
	$result = $mysqli->query($query);
		//affected_rows -> vai contar o numero de linhas afectadas
		$sucess = $mysqli->affected_rows;
		if ($sucess==1){
			echo "Dados Alterados com sucesso";
		}else{
			echo "Não foi nada alterado";
		}

		$mysqli->close();
	}

  ?>
</body>
</html>

Esta é a seguinte query que não consigo executar onde ela está situada, mas se a fizer logo a seguir À conexão à base de dados, funciona sem problema.

$query2 = "INSERT INTO comments (id_cand, comment) values (?,?)";				 
	$stmt = $mysqli ->prepare($query2);
	$stmt -> bind_param ("ds", $id_cand, $comment);
	if(!$stmt ->execute()){
		$code = $stmt->errno; 
		$message = $stmt->error; 
			printf('<p> Erro : %d %s</p>', $code, $message);
			}

Qual poderá ser o problema?

Os erros são os seguintes:

Warning: mysqli::prepare() [mysqli.prepare]: Couldn't fetch mysqli in C:\wamp\www\***\***\appl_view.php on line 145

( ! ) Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\***\***\appl_view.php on line 146

--

Edit(brunoais):

  • Titulo alterado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Como é que queres que funcione, se fechas a ligação antes de lá chegares?  :D

Esta linha tem de passar para depois de todas as operações de BD:

$mysqli->close();


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
IRONLORD

Boa noite, mjamado

Obrigado desde já pelo tempo dispensado bem como a ajuda.

Já está a funcionar correctamente.

Nem tinha reparado nisso  :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.