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?