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:
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";
?>
Il messaggi di errore sono questi (ovviamente ripetuti per tutte le occorrenze trovate):
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 a
codice:
$resword = mysql_fetch_object($result_word_n);
$temp_w = $resword->word;
e poi dopo un po
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 a
codice:
$temp_id = $resrow->id_tag;
$temp_n = $resrow->id_n;
Ora, pensando che fosse un problema di mysql_fetch_object ho riscritto il codice così:
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";
?>
Cambiato script ma gli errori sono i medesimi, è come se la select non prendesse nulla...
Qualcuno saprebbe indicarmi la via per una soluzione?
Vi ringrazio in anticipo per la pazienza e la gentilezza