Jump to content

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


IRONLORD
 Share

Recommended Posts

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
Link to comment
Share on other sites

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

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.

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
 Share

×
×
  • 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.