PHP MySQL INSERT non si inserisce e non viene visualizzato alcun errore

Ho ottenuto questo codice in modo da inserire i valori in una tabella in MySQL tramite PHP. Ho provato tutte le possibili syntax di inserimento, non inserisce i dati … questi sono i codici che ho usato.

$param = "xyzxyz"; $param1 = "sdfdfg"; $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; $result = $mysql->query($sql); if($result) echo "successful"; else echo mysql->error; if(mysql->errno==0) echo "successful" else echo mysql->error; 

Ho anche provato la seguente syntax sql

 "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param1','$param1')"; "INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('$param1','$param1')"; 

e ho provato molti altri nessuno di loro inserisce nulla nel tavolo. e questa è la tabella in MySQL;

 trail User_Name varchar(35) Quiz_ID varchar(35) 

Non inserisce nulla né visualizza alcun errore. E ho la connessione DB corretta perché sono in grado di select dalla tabella. È solo l'inserto che è difficile.

Qualsiasi aiuto sarebbe molto apprezzato.

Grazie

Solo una nota se qualcuno sta correndo su problemi simili:

Ho avuto un problema simile — Inserisci query che funziona su PHPMyAdmin ma non funziona su PHP e non emette alcun errore (il risultato era vero tutto il tempo).

Il motivo è che stavo iniziando una transazione ma dimenticando di impegnarlo …

 $mysqli->autocommit(FALSE); $mysqli->query( "START TRANSACTION" ); 

Non dimenticarlo mai:

 $mysqli->commit(); 

È un errore stupido, lo so, ma ero così concentrato sul mistero della query che ho dimenticato le dichiarazioni di transazione poche righe sopra.

Controlla prima mysqli :: $ errno.

 if(mysql->errno==0) echo "successful" else echo mysql->error; 

Quello che ho fatto è che se non hai un debugger installato, basta che ti mandi via email la query. In questo modo puoi vedere qual è la query finale e se hai accesso a qualcosa come phpMyAdmin prova a eseguire manualmente la query e guarda cosa succede. Un'altra cosa, assicurarsi di cercare correttamente il record inserito, se si utilizza una query di ricerca a causa del numero di record assicurarsi che la condizione WHERE sia corretta, che mi ha bruciato alcune volte.

MODIFICA Simbolo mancante attorno ai nomi forse. Devo eseguire tutte le mie query MySQL come

 `nameOfThing` 

invece di solo nameOfThing

 $param = "xyzxyz"; $param1 = "sdfdfg"; $sql = "INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('".$param."','".$param1."')"; $result = $mysql->query($sql); if($result) echo "successful"; else echo mysql->error; if(mysql->errno==0) echo "successful" else echo mysql->error; 

Per tua informazione, stai inserendo $ param1 due volte.

Anche tu non hai un ';' dopo l'eco "successo".

Ti suggerisco di ripulire l'esempio di codice e provare di nuovo le cose, faccelo sapere.

Cose da pulire

  1. $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param','$param1')"; Non è necessario concatenare le variables in una string concatena, è ansible interpolare. Tuttavia, in realtà è necessario utilizzare PDO con una dichiarazione preparata per evitare il potenziale di SQL injection.
  2. Aggiungi quello mancante ;
  3. metti quel primo controllo di if(mysql->errno==0) in (a less che tu non abbia intenzione di passare a PDO per questa roba).
  4. Risolvi mysql->error per essere mysql->error()
  5. Forse alcune altre cose dai commenti.

Bene, se il codice seguente non produce errori e mostra 1 row interessata, molto probabilmente stai cercando il risultato nel database sbagliato.

 ini_set('display_errors', 1); error_reporting(E_ALL); $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('testing','1')"; $mysql->query($sql); var_dump($mysql->error,$mysql->affected_rows); 

I miei tavoli erano tavoli InnoDB e quando ho cambiato i miei tavoli in MyISAM l'inserto ha funzionato bene. Bene non ho mai incontrato questo problema prima. Bene, per il momento ha funzionato.

Se voglio usare il motore InnoDB per le transactions? Come posso get php per poter inserire valori nella tabella InnoDB? Qualcuno ha qualche suggerimento? E sto usando il server WAMP e MySQL è la versione 5.5.24. E ho cambiato la conf di InnoDB in my.ini ma non sembrava funzionare?

prova questo

 $param = "xyzxyz"; $param1 = "sdfdfg"; $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; $result = $mysql_query($sql); if($result){ echo "successful";} else { echo " not successful;}