Select ... where... AND... aggiornamento PHP non funziona

alessandroz

Nuovo Utente
3 Lug 2017
5
0
1
68
Salve,
devo inserire un nuovo utente mediante semplice Cognome - Nome - Nome del cane. In fase di inserimento dati devo verificare se l'utente con questi tre dati associati è già inserito. In un dominio ove è sempre configurato PHP 5.2.14 il tutto funziona perfettamente, mentre su altro dominio ove è stato configurato PHP 5.4.35 la query riportata nel codice postato non viene eseguita... o meglio, Select from nome_tabella where funziona solo se si imposta solo un parametro senza la AND. Qui allegato il codice. Facendo ricerche in giro ho sperimentato di tutto senza successo. Grazie anticipate per collaborazione.
 

Allegati

ciao
è meglio che tu posti direttamente il codice, sulla riga di formattazione del post inserisci->codice è poi scegli se generico o php o html
 
PHP:
<?php
include "config.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?Php
// Da form
if (isset($_POST['cogn']) && isset($_POST['nome']))
   {
   $cogn=$_POST['cogn'];
   $nome=$_POST['nome'];
   $nomecane=$_POST['nomecane'];
   echo"$cogn - $nome - $nomecane";
   }
   $connessione = new mysqli($host, $user, $pwd, $fontedati);
    if ($connessione->connect_error) {
        die('Errore di connessione (' . $connessione->connect_errno . ') '
        . $mysqli->connect_error);
    } else {
        echo 'Connesso. ' . $connessione->host_info . "\n";
    }
     $utenti = "SELECT cognome, nome, nome_cane from anag_brevetti_csen WHERE cognome='$cogn' and nome='$nome' and nome_cane='$nomecane'";
     $result = mysqli_query($connessione, $utenti);
         while($row = mysqli_fetch_assoc($result))
         {
         $id = $row['id_anag'];
         $cogn = $row['cognome'];
         $nome = $row['nome'];
         $nomecane = $row['nome_cane'];
         $cogn = htmlspecialchars($row['cognome']); 
         $nome = htmlspecialchars($row['nome']);
         $nomecane = htmlspecialchars($row['nome_cane']);
         echo"
            <Table>
            <tr>
               <td align=\"center\">{$row['cognome']}</td>
               <td align=\"center\">{$row['nome']}</td>
                <td align=\"center\">{$row['nome_cane']}</td>
            </tr>
            </table>";
         }
        
        
?>
</body>
</html>
 
ciao
vista così non vedo errori di sintassi, l'unica incongruenza è che nella select specifichi i nomi dei campo che vuoi estrarre (cognome, nome, nome_cane), ma poi nel while cerchi di estrarre anche $row['id_anag']
quindi o togli l'istruzione dal while o correggi la select es.
PHP:
$utenti = "SELECT * FROM anag_brevetti_csen WHERE cognome='$cogn' AND nome='$nome' AND nome_cane='$nomecane'";
eventualmente specifica meglio che tipo di errore ti da
 
Purtroppo non da nessun errore... lo script "si ferma" alla conferma della connessione al database (echo 'Connesso. ' . $connessione->host_info . "\n";); dopodichè non esegue la query.
 
ciao
intanto vediamo di capire dove si blocca, metti dei var_dump che poi toglierai
PHP:
//...........
 } else {
        echo 'Connesso. ' . $connessione->host_info . "\n";
    }
     $utenti = "SELECT cognome, nome, nome_cane from anag_brevetti_csen WHERE cognome='$cogn' and nome='$nome' and nome_cane='$nomecane'";
    var_dump($utenti);
    $result = mysqli_query($connessione, $utenti);
    var_dump($result);
//........
il primo dovrebbe ritornarti il contenuto della variabile $utenti, pressappoco
string(xy) "SELECT........"
il secondo
se la query non viene eseguita bool FALSE, altrimenti RESOURCE...
poi una seconda cosa, vedo che mescoli la programmazione ad oggetti ( $connessione = new mysqli(...)) con la procedurale ($result = mysqli_query(...)), prova a fare tutto in procedurale (io non amo quella ad oggetti)
PHP:
$connessione = mysqli_connect($host,$username,$password,$database) or die (mysqli_error());
 
ciao
dimenticavo
togli le informazioni sugli errori e sull'host, non si sa mai che qualcuno possa approfittarne
in caso di errore puoi mettere un echo di avviso e rimandare ad una pagina che vuoi
 
Risolto!
Ho tolto la riga $connessione = new mysqli($host, $user, $pwd, $fontedati);
modificata come da te suggerito in $connessione = mysqli_connect($host,$user,$pwd,$fontedati) or die (mysqli_error());
La query $utenti è stata eseguita!
Ho anche trovato nella documentazione inserita in PHPMyAdmin lo script che ho provato e che funziona anch'esso
$utenti= "SELECT cognome, nome, nome_cane FROM anag_brevetti_csen WHERE cognome = '$cogn' AND nome = '$nome'
UNION
SELECT cognome, nome, nome_cane FROM anag_brevetti_csen WHERE nome_cane = '$nomecane'";
Mantenendo la richiesta di connessione con new mysqli.....

Spero di essermi spiegato bene.
Ti ringrazio per il supporto prezioso.
 
ciao
stessa tabella stessi campi, perchè non fai semplicemente
PHP:
//...
$utenti= "SELECT * FROM anag_brevetti_csen WHERE cognome = '$cogn' AND nome = '$nome' AND nome_cane = '$nomecane'";
//..
?
 
Si è una cosa che mi sono "appuntato"; sto rifacendo tutta la procedura di connessione e gestione delle tabelle su tutte le pagine... un lavoro un pò noioso!
Di nuovo grazie.
A presto!!!
 

Discussioni simili