Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com conexão MySQL - PHP


Gabrielvt14

Pergunta

Olá amigos,

Estou criando um sistema de CRUD para práticas, e meu código está dando erro no meu PREPARE. Não consegui resolver o erro sozinho, alguém poderia me auxiliar?

Código index.php:

<?php

	require_once 'core/init.php';

	// Abre a conexao com o banco de dados
	$pdo = db_connect();

	// SQL para contar o total de registros.
	$sql_count = "SELECT COUNT(*) AS nome FROM usuarios ORDER BY name ASC";

	// SQL para selecionar os registros
	$sql = "SELECT id, nome, email, nasc FROM usuarios ORDER BY nome ASC";

	// Conta o total de registros
	$stmt_count = $pdo->prepare($sql_count);
	$stmt_count->execute();
	$total = $stmt_count->fetchColumn();

	// Seleciona os registros
	$stmt = $pdo->prepare($sql);
	$stmt->execute();

?>

<html>
<head>
<title>Bem Vindo</title>

<script
src="http://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous">
</script>

    <!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>


</head>
<body>

<!-- ==================== NAVBAR INICIO - BOOTSTRAP ==================== -->
	<nav class="navbar navbar-inverse">
  <div id="inicio" class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#inicio"><b>Hoo</b></a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
      	<li><a href="cadastro.php">	<u>Cadastrar novo usuario</u></a></li>
  	  </ul>
      <ul class="nav navbar-nav navbar-right">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Perfil <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li role="separator" class="divider"></li>
            <li><a href="">Sair</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
<!-- ==================== NAVBAR FIM - BOOTSTRAP ==================== -->


<!-- ==================== TABLE INICIO - BOOTSTRAP ==================== -->
<p>Total de usuarios: <?php echo $total; ?></p>
<?php if($total > 0): ?>
<table class="table table-hover">
 	<thead>
 		<th>ID</th>
 		<th>Nome</th>
 		<th>E-MAIL</th>
 		<th>Idade</th>
 		<th>Ações</th>
 	</thead>

 	<tbody>
 		<?php while ($user = $stmt->fetch(PDO::FETCH_ASSOC)): ?>
 			<tr>
 				<td><?php echo $user['nome'] ?></td>
 				<td><?php echo $user['email'] ?></td>
 				<td><?php echo calcIdade($user['nasc']) ?> anos</td>
 				<td>
 					<a href="editar.php?id=<?php echo $user['id'] ?>" class="btn btn-primary btn-sm">Editar</a>
 					<a href="deletar.php?id=<?php $user['id'] ?>" onclick="return confirm('Tem certeza que deseja excluir este usuario?'); class="btn btn-danger btn-sm">Excluir</a>
 				</td>
 			</tr>
 		<?php endwhile; ?>
 	</tbody>
</table>

<?php endif; ?>
<!-- ==================== TABLE FIM - BOOTSTRAP ==================== -->

</body>
</html>

 

Arquivo do banco de dados init.php;

<?php
	
	// Constantes com as credenciais para conexão com o banco de dados MySQL
	define('MYSQL_HOST', 'localhost');
	define('MYSQL_USER', 'root');
	define('MYSQL_PASS', '');
	define('MYSQL_DB_NAME', 'alpha');

	// Função que chama a classe PDO
	function db_connect(){
		$pdo = new PDO('mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB_NAME, MYSQL_USER, MYSQL_PASS);
	}

	// Tentativa de conexão com o banco com tratativa de erro
	try {
		$pdo = new PDO('mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB_NAME, MYSQL_USER, MYSQL_PASS);
	} catch (PDOException $e) {
		echo 'Erro ao conectar com a base de dados: '.$e->getMessage();
	}

 

Quando executo o código ele apresenta o seguinte erro:

 Fatal error: Call to a member function prepare() on null in C:\wamp64\www\ProjetoALPHA\index1.php on line 18

 

Alguém poderia me ajuda?

Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

cara..
1 - comece a usar comandos de detecção de erros;
principalmente esses:

ini_set('display_errors', true);
error_reporting(E_ALL);

2 - comenta essa linha:

// $pdo = db_connect();

(é inutil; $pdo é uma coisa, funçao db_connect() é outra);

3 - acerta essa sql:

$sql_count = "SELECT COUNT(*) AS total FROM usuarios";

4 - acerta o "fetch":

$total = $stmt_count->fetch(PDO::FETCH_OBJ);

5 - e aqui tb (onde exibe):

<p>Total de usuarios: <?php echo $total->total; ?></p>

e, cara..de boa.. estude lógica p/ começar a diferenciar uma variavel de uma função etc.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...