Buongiorno a tutti è da qualche giorno che non riesco più ad inserire i dati sul mio database tramite script php, pur non avendo modificato nulla. Grazie per l'eventuale risposta.
Printable View
Buongiorno a tutti è da qualche giorno che non riesco più ad inserire i dati sul mio database tramite script php, pur non avendo modificato nulla. Grazie per l'eventuale risposta.
Appare qualche errore? Specifichi tutti i campi non "default" della tabella?
Prova ad incollare la stessa query sotto "query" da phpMyAdmin (all'inizio specifica il tuo database cliccando su "my_vonax", poi "SQL" ed esegui la query).
Ciao!
Non appare nessun errore, il tutto era funzionante sino a qualche giorno fa. Sotto query da phpMyAdmin funziona, proprio non riesco a capire.
Se la query identica funziona su phpMyAdmin, allora c'è qualche problema lato PHP.
Prima prova a impostare un'altra versione di PHP da qui. Se ancora non hai risolto posta il codice.
Ciao!
Grazie per la risposta. Avevo già provato a cambiare versione di PHP ma niente, questo è il codice che funziona ormai da anni e che ho inviato ad un amico che lo utilizza con successo, sempre su altervista:
Codice PHP:
<?php
$file = "******.txt";
$open = fopen($file, "w");
$percorso = file("*******.txt");
while(list(,$value) = each($percorso))
{
list($data, $totale, $attuale, $max, $oramax, $err) = split("[-]", $value);
//list($data, $totale, $attuale, $max, $oramax) = explode("-", $value);
$params["data"] = trim($data);
$params["totale"] = trim($totale);
$params["attuale"] = trim($attuale);
$params["max"] = trim($max);
$params["oramax"] = trim($oramax);
$params["err"] = trim($err);
}
$link=mysql_connect("localhost","vonax","password")
or die ("Non riesco a connettermi al server MySql.");
//echo "Connessione riuscita.";
mysql_select_db ("my_vonax",$link);
$query="INSERT INTO kw VALUES('$data', '$totale', '$attuale','$oramax','$max')
ON DUPLICATE KEY
UPDATE totale ='$totale', attuale ='$attuale', datamax='$oramax', max= '$max'";
$res=mysql_query($query);
for ($m = 1; $m <= 12; ++$m) {
$query = "SELECT SUM(attuale) as gen FROM kw where data LIKE '%%/0$m/2018' OR data LIKE '%%/$m/2018'";
$result = mysql_query($query);
list($gen) = mysql_fetch_array($result);
if ($gen==0){
$gen=0;
}
$ge[$m]=$gen;
$testo = $ge[$m].'-';
$write = fwrite ($open, $testo);
}
fclose($open);
?>
Prima di apllicare tale modifica bisogna essere certi dell'errore specifico , una volta individuato l'errore allora si passa verso mysqli http://php.net/manual/en/function.mysql-error.php (vediamo se MySQL rivela qualche errore, dato che non funziona l'inserimento dei dati o l'aggiornamento) effettua anche il var_dump delle variabili man mano che li crei.
Purtroppo non è quello il problema, ho un'altra tabella con mysqli, che come l'altra funzionava regolarmente, che presenta gli stessi problemi. Grazie comunque per la risposta.
Hai provato a vedere cosa ritorna mysql_error()?
Ciao!
mi risponde 0:
Puoi provare facendo un semplice script mysql e vedere mano a mano cosa non funziona facendo debug?
Una cosa tipo:
Ciao!Codice PHP:
<?php
define('NICK','vonax');
define('TABLE', 'test_cancellare');
define('STR','123a');
//connessione
$link = mysql_connect('localhost', NICK, '');
if (!$link) {
die('Not connected : ' . mysql_error());
}
//seleziono db
$db_selected = mysql_select_db('my_'.NICK, $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
//creo una tabella
$result = mysql_query('CREATE TABLE '.TABLE.' (testo VARCHAR(10))');
if (!$result) {
die('Invalid query1: ' . mysql_error());
}
//inserisco una riga
$result = mysql_query('INSERT INTO '.TABLE.' (testo) VALUES (\''.STR.'\')');
if (!$result) {
die('Invalid query2: ' . mysql_error());
}
//leggo dalla tabella
$result = mysql_query('SELECT testo FROM '.TABLE);
if (!$result) {
die('Invalid query3: ' . mysql_error());
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
//confronto il valore
while ($row = mysql_fetch_assoc($result)) {
echo 'Lettura da db: '.$row['testo'].((STR == $row['testo'])?' corrisponde':' non corrisponde a '.STR);
}
mysql_free_result($result);
//elimino la tabella creata
$result = mysql_query('DROP TABLE '.TABLE);
if (!$result) {
die('Invalid query5: ' . mysql_error());
}
mysql_close($link);
il test funziona, questo è il risultato: "Lettura da db: 123a corrisponde". Avevo già fatto una prova di scrittura con una nuova tabella, il problema è che non riesco a scrivere su quella che avevo in uso.
Grazie per l'attenzione.
Ciao.
La tabella in questione ha 5 colonne? Oppure ha altri campi che non hanno un valore default?
Ciao!
Ha 5 colonne.
Se può essere utile per la risoluzione del problema, volevo segnalare che inserendo nella insert i valori direttamente, la tabella viene aggiornata, mentre se lo faccio tramite le variabili non accade nulla. Preciso al riguardo che le variabili contengono i valori che le sono stati passati. Grazie ed un saluto.
Bene, ci stiamo avvicinando al problema!
Ora prova stampando la variabile $query per vedere cosa ritorna, ad esempio fai:
Oppure stampalo su un file con la file_put_contents()Codice PHP:
echo $query;
Ciao!Codice PHP:
file_put_contents('test.txt',$query);
Grazie dell'aiuto, ho risolto, il problema era dovuto al campo data che comprendeva anche l'ora, dato quest'ultimo che non doveva essere inserito. Ho modificato la variabile troncando la parte che non era d'interesse e va bene. Resta tuttavia da capire come mai finora ha funzionato e sopratutto come mai in un altro sito con la stessa tabella funziona. Misteri della vita.....e dell'informatica!!!!
Un saluto.