[PHP] Non inserimento in tabella

webimage

Nuovo Utente
22 Gen 2014
12
1
3
Buon giorno,
sto impazzendo nel trovare una causa...
PHP:
<?php 
include ("config.php");

$nome     = $_POST['nome'];
$cognome  = $_POST['cognome'];

//echo $nome . " " . " " . $cognome;

$ql ="INSERT INTO anagrafe (nome,cognome) VALUES ($nome','$cognome')";
$result = mysql_query($ql);

if(!$result) {
    echo "errore nella query";
}else{
    header('location:form-1.php');
}
?>
Ora il problema è questo:
I dati inviati dal form a questo file non vengono registrati nella tabella.
Premetto che le prove fatte se la connessione è ok è positiva, come pure se i dati trasmessi dal form potevo visualizzarli a video (Vedi script commentato)
Una volta processato i dati mi compare l'avviso errore nella query, riga 10 cioè in
PHP:
$result = mysql_query($ql);
Allego screenshot videata phpmyadmin.
Il dato inserito è stato fatto direttamente al momento della creazione della mini tabella.
Qualcuno può aiutarmi a capire dove sbaglio ???
Grazie a tutti.
Marco
 

Allegati

  • phpmyadmin.JPG
    phpmyadmin.JPG
    27,1 KB · Visite: 411
Inoltre ti sconsiglio di usare le ormai obsolete, oltre che deprecate, funzioni mysql e passare alle nuove mysqli
 
terzo suggerimento,
evita di mascherare gli errori con messaggi che non dicono nulla,
PHP:
if(!$result) {
    echo "errore nella query";
ma fai visualizzare sempre l'errore generato
 
Vi ringrazio per la vostra gentilezza.
Al sig. MR.x rispondo che è un mio errore di copia codice, ma nel file che ho subito ricontrollato, era presente l'apice prima di $nome. Ad ogni modo grazie

A Zorro comunico che è proprio con mysqli_query che mi dà compare il messaggio, mentre con mysql_query non comunica niente facendo presumere che tutto sia andato a buon fine, mentre invece nel data base purtroppo non riesco a fare nulla.
Al sig. Marino 51 ho smesso di mettere il die ecc ecc perchè ho trovato questa cominicazione:

In this case, "or die(mysql_error());" is strongly not recommended because mysql_error() will give out information that hackers can potentially use to break your security. This kind of code promotes SQL injection because the hackers can see the feedback from their attempts.

Riassumendo...
Con tutte le prove mysql o mysqli non riesco a fare nulla.

Ho controllato altri script di alcuni gestionali fatti mesi fa e là funziona tutto a meraviglia...
Ho provato a mettere online in un mio sito che lavora in php , pensando che fosse successo qualcosa sia a XAMPP sia EasyPHP,
ma ottengo sempre le stesse risposte...
Comincio a temere che sia sia qualche cosa nel mio pc che non va.....perchè ho un'altro problema in un'altro file in cui ci sono 8 voci da inserire, ma sebbene non compaiano errori, una voce non riesco a vederla nel data base.

E' per questo che avevo creato sta banale tabella per cercare di capire qualcosa......
Ragazzi..non so dove sbattere la testa....
Grazie a tutti, siete stati stupendi a rispondermi......e perdonate se vi ho fatto o vi faccio ancora perdere tempo...!!
Buona serata a tutti
Marco
 
In this case, "or die(mysql_error());" is strongly not recommended because mysql_error() will give out information that hackers can potentially use to break your security. This kind of code promotes SQL injection because the hackers can see the feedback from their attempts.
distinguiamo la fase dei test dalla fase "produzione"
in fase si test, non si deve brancolare nel buio producendo messaggi inutili
in fase "produzione" non si dovrebbe incorrere in errori dalla gestione del database, ma, mai dire mai
in questo caso è utile indirizzare i messaggi d'errore nel log di php per poter controllare il funzionamento delle proprie applicazioni
saluti
 
Ragazzi siete tutti speciali....ma qui non cavo un ragno dal buco..
Allego i tre banali file alla vostra attenzione, poi se qualcuno vuol provarli e se gli vanno non so più che dire...
andrò a spazzare per terra..........
Allora creato un banale database con nome esempio.
creato una banale cartella a tre campi: id, nome, cognome
creato un utente: marco, password: pozzo2015, localhost

Ecco file...se qualcuno ha voglia di provarli...e se trova l'inghippo....un giro di birra per tutti.....ok..???

File configurazione: config.php
PHP:
<?php
$db_host = 'localhost';
$db_name = 'esempio';
$db_user = 'marco';
$db_pass = 'pozzo2015';

$query = mysqli_connect($db_host,$db_user,$db_pass);
mysqli_select_db($query,$db_name);

if (!$query) {
    die("Errore nella query $query: " . mysqli_error());
}else
{
    echo 'connessione avvenuta';
}
?>

file con il FORM: form-1.php
Codice:
<!DOCTYPE html>
<html lang="it">
<head>
    <title>Prova</title>
</head>
<body>
    <div style="width: 20%; margin-left: auto; margin-right: auto; margin-top: 50px; border: solid 1px #f50; padding: 25px; background-color: #f5f5f5;">

        <form action="inserimento.php" method="post">
            <label>Nome</label><br><br>
            <input type="text" name="nome"><br><br>
            <label>Cognome</label><br><br>
            <input type="text" name="cognome"><br><br>
            <input type="submit" name="INVIA">
        </form>
    </div>
</body>
</html>

file per inserimento: inserimento.php
PHP:
<?php
include('config.php');

$nome     = $_POST['nome'];
$cognome  = $_POST['cognome'];

$ql = "INSERT INTO anagrafe (nome,cognome) VALUES ('$nome','$cognome')";
mysqli_query($ql);

if (!$ql) {
    die("Errore nella query $ql: " . mysqli_error());
}else{
    header('location:form-1.php');
}
?>

Incrocio le dita....faccio gli scongiuri....e mi preparo alle vostre lavate di testa....!!
Comunque grazie per la vostra pazienza....!!
Marco
 
Da cellulare non posso fare prove però questo
mysqli_query($ql);

andrebbe bene per mysql,
Per mysqli è
mysqli_query($query, $ql);

Come hai fatto nel file di connessione
mysqli_select_db($query,$db_name);
 
Grandeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee......!!
Funziona !!!!!
Non so come sdebitarmi....!!!
Felicissima notte caro amico....
Marco
 
Buona sera....rieccomi per una telenovela che mi sta demoralizzando non poco...
Mi affido alla vostra esperienza per darmi lumi....
Allora, risolto l'inserimento grazie a MR.x ho preso a mano la banale (era in passato...adesso non ci capisco più...) lettura dei dati della semplice tabella creata di cui sopra....
Continua a darmi errore....
Allora dato per scontato che il file config.php funziona bene, dato che ha inserito i dati trasmessi,

il file vista.php seguente...
PHP:
<!DOCTYPE html>
<html lang="it">
<head>
    <title>Vista</title>
</head>
<body>
<table style="border: #000 solid 1px; margin-left: auto; margin-right:auto; margin-top:50px; width:25%;">
    <tr>
    <th>Cognome</th><th>Nome</th>
    </tr>

<?php 
include('config.php');

$link   = "SELECT * FROM anagrafe";
$result = mysqli_query($link) or die(mysqli_error());

while($row = mysqli_fetch_assoc($result))
{
    echo "<tr>";
    echo "<td>" . $row['cognome']  ."</td>";
     echo "<td>" . $row['nome']     ."</td>";
    echo "</tr>";
}
?>

</table>
</body>
</html>

Premetto che ho provato sia con mysql_fetch_assoc(), sia con mysql_fetch_array,
richiamando il file compaiono i seguenti errori:

Codice:
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\Program Files (x86)\EasyPHP-12.0\www\esempi\gestione\vista.php on line 17

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\Program Files (x86)\EasyPHP-12.0\www\esempi\gestione\vista.php on line 17

la cui riga 17 è :
PHP:
$result = mysqli_query($link) or die(mysqli_error());

Quali altri parametri aspetta...?????

ho provato a modificare mysqli_ ecc ecc in mysql_ecc ecc
mi dice: nessun database selezionato.

Ma il file contenuto in include connette al database "esempio" e la SELECT alla tabella "anagrafe",
perchè mi dice questo...???

Ragazzi mi aiutate...????
Grazie a tutti voi.....e buona serata.
Marco
 
come in precedenza.. ti sei dimenticato il parametro di connessio $query (visto che così lo hai chiamato nel config.php)
PHP:
$result = mysqli_query($query, $link)

se vuoi risparmiare tempo ed evitare di demoralizzarti inutilmente dalla una letta al manuale
 
provato.......non funziona...!!!

Sto immergendomi in alcune pagine per mysqli......
hai qualcosa di buono da consigliarmi...??
Grazie
 
mangio....poi arrivo....
scusa ma la famiglia prima di tutto...
Intanto grazie....a dopo
 
ma figurati, ci mancherebbe..

p.s. io prima ti ho passato la correzione del primo Warning... per il secondo è la stessa cosa...
 
  • Like
Reactions: webimage
Eccomi,
scusa la fretta, ......
Avevo battuto male la parola $query....in $querj......per forza che non andava....adesso funziona e ti ringrazio...
Non riesco ad intuire perchè deve essere usata $query, che non compare da sola nel codice, ma solo collegata alle funzioni.!!
Forse col tempo capirò.....scusa ma la mia tarda età...certo non aiuta..!!

Ad ogni modo per ora grazie.....anche se avrei un problemino strano in una tabella...in un altro programma.
nella struttura compare una voce.
Nell'inserimento manuale tramite inserisci di phpmyadmin, una volta cliccato "esegui" nella tabella già presente con dati, non compare la colonna in oggetto.
Premetto che tutti gli altri dati, prelevati da diverse tabelle, vengono correttamente prelevati e inseriti nella tabella come puoi vedere, tramite una "SELECT " e option.
E stranamente tutte le altre voci funzionano alla grande usando ancora mysql e non mysqli....e senza dover inserire quella stramaledetta $query che mi hai insegnato......
Va beh....pazienza....ma andiamo per gradi.
Allego un paio di screenshot.......
La prima ho inserito i dati poi cliccato esegui
La seconda, come vedi non compare la colonna con il dato inserito (ultima voce del primo screenshot)
Tu cosa pensi...?????
 

Allegati

  • inserimento-manuale-dati.JPG
    inserimento-manuale-dati.JPG
    62,7 KB · Visite: 355
  • colonna-assente.JPG
    colonna-assente.JPG
    106,1 KB · Visite: 439
Non riesco ad intuire perchè deve essere usata $query, che non compare da sola nel codice, ma solo collegata alle funzioni.!!
mysqli_query() prevede che il primo parametro sia il link al server MySQL. controlla il tuo config.php, la variabile $query è li (puoi anche chiamarla $connessione, all'atto pratico non ti cambia).
E stranamente tutte le altre voci funzionano alla grande usando ancora mysql e non mysqli
Dipende dal codice e da dove viene eseguito. mysql è deprecato, significa che non è più supportato e non è garantita in futuro (sempre più presente) la compatibilità. .. e non prevedeva nella mysql_query() il secondo parametro.

Nell'inserimento manuale tramite inserisci di phpmyadmin, una volta cliccato "esegui" nella tabella già presente con dati, non compare la colonna in oggetto.
il tasto inserisci serve ad inserire una nuova riga, se vuoi inserire una colonna devi andare in struttura, dopo la lista dei campi trovi il pulsante aggiungi campo dopo tabella. Se ho capito correttamente quello che chiedi. In aòternativa scrivi la query sql

p.s.
se non fossero sufficienti i link a phpnet
https://www.w3schools.com/php/php_mysql_connect.asp

hai anche qui le sintatti con esempi che puoi utilizzare come riferimento
 
Grazie
Ti ringrazio della tua chiara esposizione.
Ma nella struttura appare chiaramente la colonna.
Ti allego scrennshot...
fatto strarano...stranissimo....è che ho modificato tutti i file con mysqli_ecc ecc e sebbene la colonna nella videata del database cliccando mostra, tu non la veda...come da screen shot precedente, nel display di vista della tabella a schermo, appaiono i dati inseriti.
secondo screensht.
Adesso vado a nanna....semmai ne parliamo con calma domani....
Ad ogni modo, grazie della tua grande competenza e sopratutto chiarezza nell'esporre le cose.
Buon lavoro...
Marco
 

Allegati

  • struttura-tabella.JPG
    struttura-tabella.JPG
    80,8 KB · Visite: 329
  • dati-presenti-in-tabella.JPG
    dati-presenti-in-tabella.JPG
    52,6 KB · Visite: 381
  • display-dati-ricavati-dalla-tabella.JPG
    display-dati-ricavati-dalla-tabella.JPG
    83,8 KB · Visite: 373
Ho capito che problema rilevi ma non ho idea della causa. Non so se potrebbe essere un problema di caching del browesr o un bug della versione di phpmyadmin, non ricordo i sia mai capitato (anche se su xampp con windows a volte qualche problema lo ebbi)
 
Grazie per la tua chiara esposizione.
Anch'io non continuo a capire il perché.
Importante è che rilevi i dati e li mostri .
Sono passato a EasyPHP in quanto con XAMPP era una problematica continua.
Con le tue dritte adesso in remoto funziona perfettamente.
Grazie ancora e...a presto .
Mi sa che dovrò abusare ancora della tua competenza e......pazienza.
Buon proseguimento di giornata .
Marco
 

Discussioni simili