[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: 182

zorro

Utente Attivo
20 Ott 2014
279
15
18
ROMA
Inoltre ti sconsiglio di usare le ormai obsolete, oltre che deprecate, funzioni mysql e passare alle nuove mysqli
 

marino51

Utente Attivo
28 Feb 2013
3.038
192
63
Lombardia
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
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
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
 

marino51

Utente Attivo
28 Feb 2013
3.038
192
63
Lombardia
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
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
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
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
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);
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
Grandeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee......!!
Funziona !!!!!
Non so come sdebitarmi....!!!
Felicissima notte caro amico....
Marco
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
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
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
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
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
provato.......non funziona...!!!

Sto immergendomi in alcune pagine per mysqli......
hai qualcosa di buono da consigliarmi...??
Grazie
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
mangio....poi arrivo....
scusa ma la famiglia prima di tutto...
Intanto grazie....a dopo
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
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

webimage

Nuovo Utente
22 Gen 2014
12
1
3
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: 122
  • colonna-assente.JPG
    colonna-assente.JPG
    106,1 KB · Visite: 184

mr.x

Utente Attivo
9 Apr 2016
252
25
28
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
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
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: 139
  • dati-presenti-in-tabella.JPG
    dati-presenti-in-tabella.JPG
    52,6 KB · Visite: 150
  • display-dati-ricavati-dalla-tabella.JPG
    display-dati-ricavati-dalla-tabella.JPG
    83,8 KB · Visite: 144

mr.x

Utente Attivo
9 Apr 2016
252
25
28
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)
 

webimage

Nuovo Utente
22 Gen 2014
12
1
3
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
Autore Titolo Forum Risposte Data
gandalf1959 [PHP] Inserimento di più righe non funziona come mi aspetto... PHP 2
L php mysql non salva solo id PHP 21
A php metodo post jquery non da mai errore jQuery 4
M Guestbook - non funziona dopo upgrade di PHP PHP 5
Valerio93 [PHP] non capisco come mai mi da la data NULL PHP 3
S [PHP] non prende la query PHP 0
WebmasterFioriniAndrea [PHP] Problema che non mi fa vedere niente PHP 2
Leshabituelles Non riesco ad aggiornare PHP PHP 0
Max 1 [PHP] Script che funziona in locale e non online PHP 16
R [PHP] pagina inclusa che non viene visualizzata PHP 2
Punix [PHP] query non valida PHP 1
M [PHP] Visualizzare un array partendo dal numero 1 e non 0 PHP 5
M [PHP] Query UPDATE che non mi aggiorna campi seconda tabella PHP 3
M [PHP] header (location..) non funzionante dopo login PHP 3
B [PHP] Valore variabile non riconosciuto PHP 1
M [PHP] Selezionare immagini directory non presenti in db PHP 11
P [PHP] $_GET non preleva variabile nell’URL PHP 4
R mojave php non interpretato PHP 11
M Non corretta lettura del file php.ini della sezione CLI PHP 3
P [PHP] Input Type="date" non va correttamente con Apple PHP 2
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
S [PHP] Selezionare i campi non in comune con le altre colonne della tabella PHP 4
Monital [PHP] Insert into non inserisce tutti i dati PHP 1
T interpretare uno script php non fatto da me... PHP 3
M PHP - Funzione non e scrive il risultato PHP 3
L [PHP] case then e campo non riconosciuto PHP 0
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
T [PHP] ...Parse error che non c'è... PHP 7
M [PHP] Non si connette PHP 7
W [PHP] Non esegue il parsing su un dato sito e negli altri si... PHP 0
A Php mail non invia due mail di seguito PHP 3
O PHP 5.6 non riesco ad abilitare TSL 1.2 PHP 1
L [PHP] Nuovo server, query non funzionano PHP 3
M [PHP] Escludere campi non valorizzati PHP 22
Tommy03 Perchè non si apre una pagina PHP PHP 4
F [PHP] if(isset($_POST['Invia'])) non mi riconosce le variabili PHP 3
D [PHP] Update non trasferisce condizione where PHP 1
V Creare tabella mysql con php non funziona PHP 1
V [PHP] Perché non funziona ? PHP 1
V [PHP] Variabile modificata in un if non mantiene quel valore PHP 5
alessandra86 [PHP] Elementi di un array non visualizzabili PHP 7
C [PHP] non trovo l'errore? PHP 3
A [PHP] Non prende variabile $provincia ma tutte le altre si PHP 6
M [css][php] codice php esterno non vede il css PHP 6
M [PHP] Non calcola l'ultimo record inserito PHP 13
M [PHP] Problema IF non riconosciuta PHP 2
D [PHP] in una determinata fascia oraria non visualzzare campo PHP 5
T PHP: aggiunta a query che non so fare... PHP 2
ICTSM [PHP] Collegamento a database non localhost PHP 3
M [PHP] Menu a tendina dinamico che non si aggiorna PHP 2

Discussioni simili