Buonasera a tutti,
mi sono da poco avvicinato al php e vorrei presentarvi un mio piccolo script con cui sto perdendo le speranze!
In sintesi io ho 2 db in locale (stesso host, user e pass).
Ciò di cui ho bisogno è: prendere degli id nel calpo "id_n" nel db1.tabella1 (ci sono righe in cui nello stesso campo sono presenti più id separati da uno spazio vuoto), andare a vedere nel db2.tabella1 (che contiene campi: id - primary key e word) a ogni id che parola corrisponde, concatenare tutte le parole trovate per ogni riga in una stringa e poi salvarle nel db1.tabella1 nel campo word_n.
Segue lo script:
Il messaggi di errore sono questi (ovviamente ripetuti per tutte le occorrenze trovate):codice:<?php //Effettuo la connessione $connessione = mysql_connect('localhost','root',''); if (!$connessione){ echo 'connessione non stabilita'; } //Accedo a tutti i record della tabella1 nel db1 $query = 'SELECT * FROM db1.tabella1'; $result = mysql_query($query); //Conto il numero di occorrenze trovate nel db $numrows = mysql_num_rows($result); //Avvio un ciclo for che si ripete per il numero di occorrenze trovate for($i=0; $i<$numrows; $i++) { $resrow = mysql_fetch_object($result); //Salvo i due campi che mi servono in due variabili temporanee $temp_id = $resrow->id_tag; $temp_n = $resrow->id_n; $str_n = ''; //Controllo che il campo non sia vuoto if (strlen($temp_id) > 0) { //Creo un array che contenga tutti gli id_n, se è falso e quindi non c'è separatore, vuol dire che conterrà un solo indice if ($array_n = explode(' ',$temp_n) !== FALSE) { //Avvio un ciclo for che si ripete per il numero di id_n for($i=0; $i<count($array_n); $i++) { $query_word_n = 'SELECT * FROM db2.tabella1 WHERE id = $array_n'; $result_word_n = mysql_query($query_word_n); $resword = mysql_fetch_object($result_word_n); $temp_w = $resword->word; $str_n = $str_n . ' ' . $temp_w; } } else { $query_word_n = 'SELECT * FROM db2.tabella1 WHERE id = $array_n'; $result_word_n = mysql_query($query_word_n); $resword = mysql_fetch_object($result_word_n); $temp_w = $resword->word; $str_n = $temp_w; } } //A questo punto inserisco la stringa contenente i risultati all'interno della tabella1 nel db1 nella colonna word_n mysql_query ('UPDATE db1.tabella1 SET word_n = $str_n WHERE id_tag = $temp_id'); } echo "Inserimento avvenuto con successo"; ?>
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\progetto\inserim.php on line 36
Notice: Trying to get property of non-object in C:\xampp\htdocs\progetto\inserim.php on line 37
che si riferisce ae poi dopo un pocodice:$resword = mysql_fetch_object($result_word_n); $temp_w = $resword->word;
Notice: Trying to get property of non-object in C:\xampp\htdocs\progetto\inserim.php on line 25
Notice: Trying to get property of non-object in C:\xampp\htdocs\progetto\inserim.php on line 26
che si riferisce aOra, pensando che fosse un problema di mysql_fetch_object ho riscritto il codice così:codice:$temp_id = $resrow->id_tag; $temp_n = $resrow->id_n;
Cambiato script ma gli errori sono i medesimi, è come se la select non prendesse nulla...codice:<?php //Effettuo la connessione $connessione = mysql_connect('localhost','root',''); if (!$connessione){ echo 'connessione non stabilita'; } //Accedo a tutti i record della tabella1 del db1 $query = "SELECT * FROM db1.tabella1"; $result = mysql_query($query); if (false === $result) { echo mysql_error(); } //Conto il numero di occorrenze trovate nel db $numrows = mysql_num_rows($result); $row = mysql_fetch_row($result); //Avvio un ciclo for che si ripete per il numero di occorrenze trovate for($i=0; $i<$numrows; $i++) { //Salvo i due campi che mi servono in due variabili temporanee $temp_id = mysql_result($result,$row,"id_tag"); $temp_n = mysql_result($result,$row,"id_n"); $str_n = ''; //Controllo che il campo non sia vuoto if (strlen($temp_id) > 0) { //Creo un array che contenga tutti gli id_n, se è falso e quindi non c'è separatore, vuol dire che conterrà un solo indice if ($array_n = explode(' ',$temp_n) !== FALSE) { //Avvio un ciclo for che si ripete per il numero di id_n for($i=0; $i<2; $i++) { $query_word_n = 'SELECT * FROM db2.tabella1 WHERE id = $array_n'; $result_word_n = mysql_query($query_word_n); $row1 = mysql_fetch_row($result_word_n); $temp_w = mysql_result($result_word_n,$row1,"word"); $str_n = $str_n . ' ' . $temp_w; } } else { $query_word_n = 'SELECT * FROM db2.tabella1 WHERE id = $array_n'; $result_word_n = mysql_query($query_word_n); $row1 = mysql_fetch_row($result_word_n); $temp_w = mysql_result($result_word_n,$row1,"word"); $str_n = $temp_w; } } //A questo punto inserisco la stringa contenente i risultati all'interno della tabella1 del db1 nella colonna word_n mysql_query ('UPDATE db1.tabella1 SET word_n = $str_n WHERE id_tag = $temp_id'); } echo "Inserimento avvenuto con successo"; ?>
Qualcuno saprebbe indicarmi la via per una soluzione?
Vi ringrazio in anticipo per la pazienza e la gentilezza![]()

Rispondi quotando