[php] problema creazione query select-where

twogate

Nuovo Utente
30 Ago 2018
13
0
1
sono da pochi mesi che sto leggendo un liobro php mysql e sto creando un piccolo programma di contabilita' che ho in access .Ho un script php per selezionare le fatture rispetto ad un nome passato da un input type di una pagina html
ma mi da un errore ora posto tutto

questa e' lo script php
PHP:
<?php
if (isset ($_POST["nome1"])){
$nome1 = $_POST["nome1"];
    try{
include $_SERVER["DOCUMENT_ROOT"].'../includes/db.inc.php';
  $sql = "SELECT * FROM registro WHERE 'descrizione' = $nome1";
 
  $jokes = $pdo->query($sql);
    $title="prima nota";
    ob_start();
  
    include '../../templates/fatture.html.php';
  
    $output=ob_get_clean();
  
  }
  catch (PDOException $e) {
    $title = 'An error has occurred';
    $output = 'DAtabase error: ' . $e->getMessage() . ' in ' .
    $e->getFile() . ':' . $e->getLine();
  }
  
}
else {
  $title = 'date riferimento';
  ob_start();
  include '../../templates/dateprimanota.html.php';
  $output = ob_get_clean();
}
include "schemafatt.html.php";
"

questa e' la pagina html form che passa il nome

"
<form action="" method="post">
 <label for="data">PRIMA DATA</label>
 <input type name="nome1">
   <input type="submit" value="cerca">
</form>
PHP:
  <body>
 
     <table border="1" cellspacing="4" cellpadding="4">
    <tr>
     <th>id</th>
     <th>data</th>
     <th>data pagamento</th>
     <th>cod fornitore</th>
     <th>descrizione</th>
     <th>numero fattura</th>
     <th>importo</th>
     <th>cod spesa</th>
     <th>metodo</th>
     <th>numero assegno</th>
     </tr>
      <?php foreach($jokes as $joke): ?>
      <tr>
    <td align="center"><?($joke['id'])?></td>
   <td align="center"><?=($joke['data'])?></td>
   <td align="center"><?=($joke['data_pagamento'])?></td>
   <td align="center"><?=($joke['cod_fornitore'])?></td>
   <td align="center"><?=($joke['descrizione'])?></td>
   <td align="center"><?=($joke['numero_fattura'])?></td>
   <td align="center"><?=($joke['importo'])?></td>
   <td align="center"><?=($joke['cod_spesa'])?></td>
   <td align="center"><?=($joke['metodo'])?></td>
   <td align="center"><?=($joke['numero_assegno'])?></td>
  <td><form action="cancellafattura.php" method="post"></td>
    <input type="hidden" name="id" value="<?=$joke['id']?>">
<td align="center"><input type="submit" value="Delete"></td></tr>
<?php endforeach; ?>
  </form>
</table>
</body>
questa e' la pagina mostra il risultato sul tabellae questo e' l'errore
DAtabase error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cocco' in 'where clause' in C:\xampp\htdocs\mio\fatture\dateprimanota.php:10
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.006
295
83
@twogate
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
o il tag
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

marino51

Utente Attivo
28 Feb 2013
2.674
135
63
Lombardia
nel codice che hai postato non é presente la riga che manda lo script in errore,
ma leggendo l'errore dovresti trovare immediatamente come correggerlo,

Column not found: 1054 LA COLONNA DICHIARATA IN UNA QUERY NON ESISTE

Unknown column 'cocco' in 'where clause' LA COLONNA E' DICHIARATA CON NOME cocco NELLA WHERE

in C:\xampp\htdocs\mio\fatture\dateprimanota.php:10 NELLO SCRIPT dateprimanota.php ALLA RIGA 10
quindi controlla la riga nello script indicato

altri particolari,
<input type name="nome1">
NON INDICHI IL TYPE ....

$sql = "SELECT * FROM registro WHERE 'descrizione' = $nome1";
supponendo che nome1 sia una descrizione o una data, andrebbero scritte tra apici, cioè
PHP:
$sql = "SELECT * FROM registro WHERE descrizione = '".$nome1."'";
 

twogate

Nuovo Utente
30 Ago 2018
13
0
1
chiedo scusa per la pubblicazione errata avendo anche letto il regolamento.
Vi ringrazio per la risposta che ha funzionato anche se non ho capito perche' i doppi apici ,
 

twogate

Nuovo Utente
30 Ago 2018
13
0
1
buon giorno continuando a leggere sul libro sono arrivato al pagina del pdo statement per bloccare le query infect
sul libro e' molto generico ho provato a leggere in internet ma non riesco a trovare una soluzione come posso usare nello script pdo statement e il for each?
PHP:
<?php
if (isset ($_POST["data1"])){

    try{
include $_SERVER["DOCUMENT_ROOT"].'../includes/db.inc.php';
$data1 = $_POST["data1"];
  $sql="SELECT * FROM registro WHERE descrizione =:$data1";
  $trm= $pdo->prepare($sql);
  $trm->bindParam(":$data1",$data1);
  $trm->execute();
  $jokes= $trm->fetch();

    $title="prima nota";
    ob_start();
    
    include '../../templates/fatture.html.php';
    
    $output=ob_get_clean();
    
  }
  catch (PDOException $e) {
    $title = 'An error has occurred';

    $output = 'DAtabase error: ' . $e->getMessage() . ' in ' .
    $e->getFile() . ':' . $e->getLine();
  }
    
}
else {
  $title = 'date riferimento';

  ob_start();

  include '../../templates/dateprimanota.html.php';

  $output = ob_get_clean();
}

include "schemafatt.html.php";