Jump to content


Photo

Dúvida Com Em Select Com Classe Mysqli


  • Faça o login para participar
3 replies to this topic

#1 mateusgf

mateusgf

    Normal

  • Usuários
  • 93 posts
  • Sexo:Masculino
  • Localidade:Fortaleza-CE

Posted 01/09/2010, 14:31

Olá tenho algumas dúvidas quanto a select’s usando mysqli OO.

Abaixo tenho minha classe de conexão:

Conexao.class.php
<?php
class Conexao
{
protected $MYSQL_HOST = "localhost";
protected $MYSQL_LOGIN = "root";
protected $MYSQL_PASS = "";
protected $MYSQL_DB = "ajaxcrud";
var $db;

public function Conecta(){


$this->db = new mysqli("localhost", "root", "", "ajaxcrud");

if (mysqli_connect_errno())
{
die("Connect failed: " . mysqli_connect_error());
}

return $this->db;
}

}


Em sequida tenho minha classe de DAO (TesteEmailDao.php):

<?php
class TesteEmailDao
{

public function selectOne($conexao, $id_selectOne){

$sql = "SELECT pkID, fldField1, fldField2 FROM tbldemo WHERE pkID = ?";

if ($stmt = $conexao->prepare($sql))
{
$stmt->bind_param("i", $id_selectOne);
$stmt->execute();
$stmt->bind_result($id, $username, $password);

// display the results
while ($stmt->fetch())
{
echo "id: $id, name: $username, password, $password<br>\n";
}

// clean up your mess!
$stmt->close();
}
else
{
die("Could not prepare SQL statement: $sql");
}

$conexao->close();
}


public function selectAll($conexao){

$sql = "SELECT pkID, fldField1 FROM tbldemo LIMIT 5";

/* prepare statement */
if ($stmt = $conexao->prepare($sql)) {
$stmt->execute();

/* bind variables to prepared statement */
$stmt->bind_result($col1, $col2);

/* fetch values */
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}

/* close statement */
$stmt->close();
}
else
{
die("Could not prepare SQL statement: $sql");
}

$conexao->close();
}

}



E minha página de teste para executar os métodos de TesteEmailDao e ver se está tudo ok:

Testes.php
<?php
include_once 'database/Conexao.class.php';
include_once 'dao/TesteEmailDao.php';
$NovaConexao = new Conexao();
$NovaConexao->Conecta();


$NovoDao = new TesteEmailDao();

$NovoDao->selectOne($NovaConexao->db, 1);

$NovoDao->selectAll($NovaConexao->db);

?>


Porém, quando eu executo, ele só consegue executar um dos métodos e retorna esse erro:

Warning: mysqli::prepare() [mysqli.prepare]: Couldn't fetch mysqli in C:\php\xampp\htdocs\eclipse-workspace-galileo\GontechNewsletter\dao\TesteEmailDao.php on line 38
Could not execute SQL statement: SELECT pkID, fldField1 FROM tbldemo LIMIT 5


Os métodos selectOne e selectAll não podem ser chamados ao mesmo tempo.
Por que isso acontece? Estou fazendo algo errado?

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 01/09/2010, 17:58

Coloca também pra ele mostrar a mensagem do erro:

die("Could not prepare SQL statement: $sql<br><br>" . $conexao->error);


#3 mateusgf

mateusgf

    Normal

  • Usuários
  • 93 posts
  • Sexo:Masculino
  • Localidade:Fortaleza-CE

Posted 02/09/2010, 16:31

Coloca também pra ele mostrar a mensagem do erro:

die("Could not prepare SQL statement: $sql<br><br>" . $conexao->error);


Não mostrou nada.

Edição feita por: mateusgf, 02/09/2010, 16:32.


#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/09/2010, 19:45

Trocou nos dois die? Se trocou, inverta também a ordem da chamada e veja o que acontece:

$NovoDao->selectAll($NovaConexao->db);

$NovoDao->selectOne($NovaConexao->db, 1);





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq