Jump to content
Fórum Script Brasil
  • 0

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


Athyrson_1

Question

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

2 answers to this question

Recommended Posts

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

 

Edited by Frank K Hosaka
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...