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

Problema ao $result_infoc->bindParam('oc',$nome);


Athyrson_1

Pergunta

Tenho o problema "Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::bindParam() in C:\xampp\htdocs\Projetos\Diario-instalacao\pesquisar-duas-tabelas-php\index.php:51 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Projetos\Diario-instalacao\pesquisar-duas-tabelas-php\index.php on line 51"

Mas não estou conseguindo resolver o código abaixo está mostrando como está estruturado:

<?php
// Incluir a conexão com o banco de dados
include_once './conexao.php';
?>
<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <title>Informações</title>
</head>

<body>
    <h1>Acesso aos pedidos</h1>

    <?php
    // Receber os dados do formulário
    $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);
    //var_dump($dados);
    ?>

    <!-- Início do formulário -->
    <form method="POST" action="">
         <!-- ficar na mesma página -->
        <?php
        $oc_pesquisar = "";
        if (isset($dados['oc_pesquisar'])) {
            $oc_pesquisar = $dados['oc_pesquisar'];
        }
        ?>
        <label>Informe: </label>
        <input type="text" name="oc_pesquisar" placeholder="N° de Oc" value="<?php echo $oc_pesquisar; ?>"><br><br>

        <input type="submit" value="Pesquisar" name="PesquisarOc"><br><br>
    </form>

    <!-- Fim do formulário -->

    <?php
    // Acessa o IF quando o usuário clicar no botão
    if (!empty($dados['PesquisarOc'])){
        $nome = "%" . $dados['oc_pesquisar'] . "%";
        var_dump($dados);
        
        
    $query_oc = "SELECT infoc.cliente,  infoc.oc,  infoc.ambie, infoc.lote, infoc.ptotal, infoc.data, infoc.qtdtl
                FROM infoc
                WHERE oc LIKE oc";

           $result_infoc = $conn-> prepare($query_oc);
           $result_infoc->bindParam('oc',$nome);
           $result_infoc->execute();

    //if (($result_oc) and ($result_oc->rowCount() != 0)) {
            // Ler os registros retornado do banco de dados
            while ($row_infoc = $result_infoc->fetch(PDO::FETCH_ASSOC)) 
                //var_dump($row_infoc);
                // Extrair o array para imprimir através da chave no array
                extract($row_infoc);

                // Imprimir o valor de cada coluna retornada do banco de dados
               echo "N°de OC:".$rows_infoc['oc'] . "<br>";
               echo "Ambiente:".$rows_infoc[`ambi`] . "<br>";
               echo "Data:".$rows_infoc['oc'] . "<br>";
               echo "Liberado Por:".$rows_infoc['liberado'] . "<br>";
               echo "Caixa Master:".$rows_infoc['cxmaster']. "<br>";
               echo "Item:".$rows_infoc['item'] . "<br>";
               echo "Total de Volumes:".$rows_infoc['totalvolumes'] . "<br><br>";
               echo "<hr>";
            }
           //}
           //}
    ?>

</body>

</html>

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Tentei testar o seu código, e acredito que o "extract" está sendo usado de maneira errada. Não consegui trabalhar com o bindParam, eu mudei para bindValue. Aqui está o código que usei, procurei nomes ao invés de pedido.

astudy.php

<?php
$conn=new PDO("mysql:host=localhost;dbname=diario","root","");
if (isset($_GET['oc_pesquisar'])) { 
    $oc_pesquisar = $_GET['oc_pesquisar'];
    $query_oc = "SELECT pessoa FROM tbpessoa WHERE pessoa LIKE :oc";
    $result_infoc = $conn-> prepare($query_oc);
    $result_infoc->bindValue('oc','%'.$oc_pesquisar.'%');
    $result_infoc->execute();
    while($row_infoc=$result_infoc->fetch(PDO::FETCH_BOTH)){
        echo $row_infoc['pessoa']."<br>";  }
    echo "<button onclick=location.replace('astudy.php')>Nova Pesquisa</button>"; 
    exit;}
?>
<!DOCTYPE html><html lang="pt-br"><head><meta charset="UTF-8">
<title>Informações</title></head>
<body><h1>Pesquisar nomes</h1>
<form>
<label>Informe: </label>
<input name=oc_pesquisar placeholder="Pesquisar nome"><p>
<input type="submit" value="Pesquisar"><br><br>
</form></body></html>

Ao invés de usar o motor PDO, eu uso o motor mysqli, ambos fazem o mesmo serviço, o problema é que o mysqli só funciona com o MySQL.
 

<?php
$mysqli=new mysqli("localhost","root","","diario");
if (isset($_GET['procurar'])) { 
    $procurar = $_GET['procurar'];
    $query=$mysqli->query("select * from tbpessoa where pessoa like '%$procurar%'");
    while($row=$query->fetch_assoc()){
        echo $row['pessoa']."<br>";  }
    echo "<button onclick=location.replace('astudy.php')>Nova Pesquisa</button>"; 
    exit;}
?>
<form>
Pesquisar pessoas: <p>
<input name=procurar placeholder="Pesquisar nome"><p>
<input type=submit value=Pesquisar>

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

  • 0

O erro "Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::bindParam()" ocorre porque você está utilizando o método bindParam() em um objeto mysqli_stmt, que é o tipo de objeto retornado quando você utiliza a extensão MySQLi. No entanto, no seu código, você está utilizando a classe PDO para acessar o banco de dados, e o método correto para fazer o bind de parâmetros em uma consulta preparada no PDO é o bindValue().

Aqui está a correção do trecho do código que está causando o erro:

 

$query_oc = "SELECT infoc.cliente,  infoc.oc,  infoc.ambie, infoc.lote, infoc.ptotal, infoc.data, infoc.qtdtl
                FROM infoc
                WHERE oc LIKE :oc";

$result_infoc = $conn->prepare($query_oc);
$result_infoc->bindValue(':oc', $nome);
$result_infoc->execute();

Além disso, no seu loop while para percorrer os resultados da consulta, você está utilizando $rows_infoc para acessar os dados do resultado, mas você definiu a variável como $row_infoc:

 

while ($row_infoc = $result_infoc->fetch(PDO::FETCH_ASSOC)) {
    // Imprimir o valor de cada coluna retornada do banco de dados
    echo "N°de OC:".$row_infoc['oc'] . "<br>";
    echo "Ambiente:".$row_infoc['ambie'] . "<br>";
    echo "Data:".$row_infoc['data'] . "<br>";
    // Restante do seu código...
}

Com essas correções, o código deve funcionar corretamente. Certifique-se também de que a conexão com o banco de dados está sendo feita corretamente no arquivo conexao.php e de que as tabelas e campos mencionados na consulta SQL existem no seu banco de dados.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...