Jump to content
MMousinho

[Resolvido] Erro PHP com MYSQLi

Recommended Posts

MMousinho

Boa noite.

Estou desenvolvendo um projeto de ordem de serviços, porém esta dando apenas um erro e não sei como resolver.

Segue o erro:

( ! ) Fatal error: Call to a member function bind_param() on boolean in C:\Program Files\VertrigoServ\www\servicosterceiros\processa.php on line 21

Call Stack

#TimeMemoryFunctionLocation

10.0008250392{main}( )...\processa.php:0

Segue o código da index:

<!doctype html>
<html>
<head>
        <meta charset="utf-8">
        <title>O.S.Terceiros</title>
</head>

<body>
 
 
 <form name='ordemdeservicosterceiros' action='processa.php' method='post'>


  <center>
  <table width="350" border="0">
  <tbody>
    
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Data:</h1></td>
      <td><input type='date' name='data' id='data'></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Placa:</h1></td>
      <td><input type='text' name='placa' id='placa'>    Coloque a placa sem espaço ou traço. ("AAA1234")</td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Tipo de Veículo:</h1></td>
        <td><select input type='text' name='tipodeveiculo' id='tipodeveiculo'>
                <option value=""></option>
                <option value="Moto">Moto</option>
                <option value="Fiorino">Fiorino</option>
                <option value="Doblo">Doblo</option>
                <option value="HR">HR</option>
                <option value="Vuc">Vuc</option>
                <option value="Toco">Toco</option>
                <option value="Truck">Truck</option>
                <option value="Cavalo Mecanico">Cavalo Mecânico</option>
                <option value="Carreta">Carreta</option>
   </select></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Colaborador:</h1></td>
      <td><input type='text' name='colaborador' id='colaborador' size="70">    Insira seu nome completo!!!</td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Cliente:</h1></td>
      <td><input type='text' name='cliente' id='cliente' size="100"></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Origem:</h1></td>
      <td><input type='text' name='origem' id='origem' size="50"></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Destino:</h1></td>
      <td><input type='text' name='destino' id='destino' size="50"></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Horário início:</h1></td>
      <td><input type='time' name='horainicio' id='horainicio'></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Horário Término:</h1></td>
      <td><input type='time' name='horatermino' id='horatermino'></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Solicitante:</h1> </td>
      <td><input type='text' name='solicitante' id='solicitante' size="50"></td>
    </tr>
    <tr>
      <td><h1 style="color: #0700B3; font-size: 20px; text-align: left;">Observação:</h1> </td>
      <td><input type='text' name='observacao' id='observacao'  size="100" ></td>
    </tr>
  </tbody>
</table>

    <p><input type='submit' name='botao' value='Enviar'></p>

</center>
        
       
  </form>
 
</body>
</html>

Segue o código da conexão: (denominada como "processa"

<?php

include('conecta.php');

$id=0;
$data=$_POST['data'];
$placa=$_POST['placa'];
$tipodeveiculo=$_POST['tipodeveiculo'];
$colaborador=$_POST['colaborador'];
$cliente=$_POST['cliente'];
$origem=$_POST['origem'];
$destino=$_POST['destino'];
$horainicio=$_POST['horainicio'];
$horatermino=$_POST['horatermino'];
$solicitante=$_POST['solicitante'];
$observacao=$_POST['observacao'];


$sql=$mysqli->prepare("insert into cadastro values (?,?,?,?,?,?,?,?,?,?,?,?)");

$sql->bind_param("issssssssss", $id, $data, $placa, $tipodeveiculo, $colaborador, $cliente, $origem, $destino, $horainicio, $horatermino, $solicitante, $observacao);

$sql->execute();

$sql->store_result();

$result=$sql->affected_rows;

if ($result > 0)
{
    
    echo "<script>
    
    alert('Dados inseridos com sucesso!');
    window.location.href='index.php';
    
    </script>
    
    ";
}

else
    
{
    
    echo "<script>
    
    alert('Erro!');
    window.location.href='index.php';
    
    </script>
    
    ";
}
    
    

?>

 Segue a conexão com BD: (Denominada como "conecta"



<?php


$servidor='localhost';
$usuario='root';
$senha='vertrigo';
$bancodedados='ordemdeservicosterceiros';


$mysqli= new MySQLi ($servidor, $usuario, $senha, $bancodedados);

if (mysqli_connect_errno())
{
    die ('Houve o seguinte erro:' .mysqli_connect_errno());
    exit();
    
}

?>

Alguém consegue me ajudar com este erro?

Será que é algo com o tipo de valor neste campo?

$sql->bind_param("issssssssss", $id, $data, $placa, $tipodeveiculo, $colaborador, $cliente, $origem, $destino, $horainicio, $horatermino, $solicitante, $observacao);

Share this post


Link to post
Share on other sites
MMousinho
11 horas atrás, Geremias disse:

Não falta um "s" no bind_param?

Obrigado pela dica man, mais ainda continua o mesmo erro, deve ter mais alguma coisa.

 

Vlw.

Share this post


Link to post
Share on other sites
Geremias

$sql=$mysqli->prepare("insert into cadastro values (?,?,?,?,?,?,?,?,?,?,?,?)");

tens de dizer onde queres introduzir os valores

$sql=$mysqli->prepare("INSERT INTO table (var_db1, var_db2, var_db3) VALUES (?,?,?)");

 

Share this post


Link to post
Share on other sites
MMousinho
3 minutos atrás, Geremias disse:

$sql=$mysqli->prepare("insert into cadastro values (?,?,?,?,?,?,?,?,?,?,?,?)");

tens de dizer onde queres introduzir os valores

$sql=$mysqli->prepare("INSERT INTO table (var_db1, var_db2, var_db3) VALUES (?,?,?)");

 

Mais isto ja estou fazendo acima man, certo?

 

$sql=$mysqli->prepare("insert into cadastro values (?,?,?,?,?)");

Share this post


Link to post
Share on other sites
Geremias

$sql=$mysqli->prepare("insert into cadastro (nomes_dos_campos_na_db) values (?,?,?,?,?)");

Share this post


Link to post
Share on other sites
MMousinho
Agora, Geremias disse:

$sql=$mysqli->prepare("insert into cadastro (nomes_dos_campos_na_db) values (?,?,?,?,?)");

 

$sql=$mysqli->prepare("insert into cadastro (nomes_dos_campos_na_db) values (Quantidade de campos coloco as ?)");

 

Certo?

Share this post


Link to post
Share on other sites
MMousinho
Agora, MMousinho disse:

 

$sql=$mysqli->prepare("insert into cadastro (nomes_dos_campos_na_db) values (Quantidade de campos coloco as ?)");

 

Certo?

Resolvido man,

 

Na verdade eu estava colocando o nome do DB errado. 

 

Abrigado.

Share this post


Link to post
Share on other sites
Geremias

A forma mais correta seria

INSERT INTO table (a, b, c) VALUES (?,?,?)

ou (assim ja n tinhas de usar o bind_param)

INSERT INTO table SET a=1, b=2, c=3

Share this post


Link to post
Share on other sites
MMousinho
10 minutos atrás, Geremias disse:

A forma mais correta seria

INSERT INTO table (a, b, c) VALUES (?,?,?)

ou (assim ja n tinhas de usar o bind_param)

INSERT INTO table SET a=1, b=2, c=3

Resolvido man, Vlw.

 

Agora vou ter que colocar um post na tela do que acabou de ser cadastrado, tipo um  Relatório.

Share this post


Link to post
Share on other sites
M6

O comando 

1 hour ago, Geremias said:

INSERT INTO table SET a=1, b=2, c=3

Não existe em SQL, essa é a sintaxe do comando update.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
JPTeixeira
1 hora atrás, M6 disse:

O comando 

Não existe em SQL, essa é a sintaxe do comando update.

Testei aqui no PC e funcionou, também achava que não, depois de procurar  descobri que funciona mas não é aconselhável

Edited by JPTeixeira

Share this post


Link to post
Share on other sites
MMousinho

Pessoal, este foi meu primeiro assunto neste forum, poderiam me ensinar como coloco como resolvido? não estou encontrando.

Share this post


Link to post
Share on other sites
HappyHippyHippo
On 07/11/2017 at 2:51 PM, Geremias said:

$sql=$mysqli->prepare("insert into cadastro values (?,?,?,?,?,?,?,?,?,?,?,?)");

tens de dizer onde queres introduzir os valores

$sql=$mysqli->prepare("INSERT INTO table (var_db1, var_db2, var_db3) VALUES (?,?,?)");

 

não tens não.

não existe obrigatoriedade de afirmar qual os nomes dos campos da tabela onde irás inserir os valores caso a lista de valores a inserir é "completa"

para ordem destes valores, será tomada a ordem existente na descrição da tabela em BD.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo
14 hours ago, MMousinho said:

Pessoal, este foi meu primeiro assunto neste forum, poderiam me ensinar como coloco como resolvido? não estou encontrando.

esta versão do fórum não tem "botão" para sinalizar como resolvido

o que normalmente se faz/pede é alterar o título do tópico para conter a descrição de resolvido


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
M6
22 hours ago, JPTeixeira said:

Testei aqui no PC e funcionou, também achava que não, depois de procurar  descobri que funciona mas não é aconselhável

O que eu referia é que não é SQL standard.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
MMousinho
Em 08/11/2017 às 13:19, HappyHippyHippo disse:

esta versão do fórum não tem "botão" para sinalizar como resolvido

o que normalmente se faz/pede é alterar o título do tópico para conter a descrição de resolvido

Ja tentei alterar o nome como resolvido e não consegui, pode me ensinar por favor?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.