- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query errata aiuto!
-
Query errata aiuto!
Ciao cari,
ho un problemi con la parte di uno script, premetto che sono una novellina del php e sto cercando per diletto di capirci qualcosa :bho:La query è questa
[PHP]
$strsql = "INSERT INTO jo_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
$rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());$strsql2 = "INSERT INTO jos_core_acl_aro (name, section_value) VALUES ('$name', '$section_value')";
$rs2=@mysql_query ("$strsql2") or die ("Errore di Connessione" .mysql_error());$strsql3 = "INSERT INTO jos_core_acl_aro (value) SELECT id FROM jos_users WHERE jos_users.name = jos_core_acl_aro.name";
$rs3=@mysql_query ("$strsql3") or die ("Errore di Connessione" .mysql_error());[/PHP]
L'ultima mi dà il problema che la tabella "jos_core_acl_aro.name" risulta sconosciutaIn poche parole, ma non so se la sintassi è giusta vorrei fare:
inserisci nel campo "value" della tabella "jos_core_acl_aro" il valore "id" preso dalla tabella jos_users dove "name" di "jos_users" è uguale a "name" di "jos_core_acl_aro.name"
Dov'è l'erroreeeeeeeeeeeeeeeee????
Mi date un suggerimento?
Grazie!
baci
-
PS:
se la modifico così[PHP]
$strsql3 = "INSERT INTO jos_core_acl_aro (value) SELECT id FROM jos_users WHERE 'jos_users.$name' = 'jos_core_acl_aro.$name'";
$rs3=@mysql_query ("$strsql3") or die ("Errore di Connessione" .mysql_error());[/PHP]
Va tutto bene ma in value nella tabella jos_core_acl_aro non inserisce nulla
-
Ciao Sara1985,
prova cosi:
[php]INSERT INTO jos_core_acl_aro (value) VALUES((SELECT id FROM jos_users WHERE 'jos_users.$name' = 'jos_core_acl_aro.$name'))"
[/php]
-
Grazie della risposta
Facendo con la tua modifica ottengo questo errore
Errore di ConnessioneColumn 'value' cannot be null
-
Ho provato anche così
[php]
$strsql3 = "INSERT INTO jos_core_acl_aro (value) SELECT id FROM jos_users WHERE name = 'jos_core_acl_aro.$name'";
[/php]Tutto bene, nessun errore ma il campo "value" in "jos_core_acl_aro" rimane vuoto.
Ma questa sintassi è errata? Io vorre dirgli"SELEZIONE id DA jos_users DOVE "name" (inteso quello in jos_users) è UGUALE al valore di "name" in jos_core_acl_aro
E' tutto cannato??? x
Sembra che non trovi alcun campo dove i due "name" sono uguali, in realtà con le query precedenti metto lo stesso valore "name" in tutte e due le tabelle
-
Ma questa query:
[php]
SELECT id FROM jos_users WHERE 'jos_users.$name' = 'jos_core_acl_aro.$name'
[/php]È sbagliata per cui restituisce null, generando quell'errore.
-
Mi spieghi in che senso è sbagliata?
Io vorre estrapolare ild ato dove i due campi "name" delle tue tabelle hanno lo stesso valore... ed è certo che c'è perchè lo immetto io stessa con le query precedenti.. e la riprova l'ho guardando il DB dal phpmyadminGrazie ancora della pazienza
-
Togli gli apici, visto che sono nomi di campi allora, e non stringhe.
-
Ho tolto gli apici
[PHP]$strsql3 = "INSERT INTO jos_core_acl_aro (value) VALUES((SELECT id FROM jos_users WHERE jos_users.$name = jos_core_acl_aro.$name))";[/PHP]
Nel form nel campo "name" metto PINCO e il risultato è:
Unknown column 'jos_users.PINCO' in 'where clause' :bho:
-
Dice che nella tabella jos_users non esiste il campo PINCO.
-
@Thedarkita said:
Dice che nella tabella jos_users non esiste il campo PINCO.
Appunto, certo che non esiste dovrebbe essere il valore che va nel campo "name".. e che se lascio gli apici ci va....
Con gli apici lasciati non dà alcun errore solo che non popola il campo "value" di "jos_core_acl_aro" con il valore che dovrebbe prendere dal campo "id" in jos_users.
Non capisco
-
Mi sà che stai mischiando troppe cose, allora se devi ottenere l'id di un utente devi fare:
SELECT id FROM users WHERE campo_nome = '$nome'
Indipendentemente se questa è in una subquery o no.
-
Ti riassumo il problema:
devo far in modo che tramite uno script si possa inserire un utente nel CMS Joomla.
Scoperti quali sono i campi interessati per far funzionare il tutto (tramite phpmyadmin) ora devo automatizzare la cosa con questo script.I passi sono inserire name, username, email, password ecc ecc in JOS_USERS, quando avviene questo inserimento il DB assegna in automatico al nuovo utente un ID.
Devo poi inserire parte degli stessi campi in "JOS_CORE_ACL_ARO".. tra questi campi devo mettere anche l'ID di JOS_USERS che è stato prima generato in automatico.la soluzione che ho pensata è stata:
dove il campo "name" è uguale (nelle due distinte tabelle), prendi ID di JOS_USERS e mettilo nel campo VALUE di JOS_CORE_ACL_AROInserisce tutto ma il campo VALUE rimane vuoto.
Spero di essermi fatta capire...ma è un casino
-
Ma se utilizzi la funzione mysql_insert_id per recuperare l'id non è meglio considerando ciò che devi fare?
-
@Thedarkita said:
Ma se utilizzi la funzione mysql_insert_id per recuperare l'id non è meglio considerando ciò che devi fare?
Se lo sapessi fare sicuramente sì
ma te l'ho detto che sono una novellina....Quindi con qiella funzione che non conosco ma che mi sa che è utilissima.. come devo fare?
Grazie ancora
-
[php]
$strsql = "INSERT INTO jo_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
$rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());$id_utente = mysql_insert_id();
[/php]In $id_utente ha l'id dell'utente.
-
@Thedarkita said:
[php]
$strsql = "INSERT INTO jo_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
$rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());$id_utente = mysql_insert_id();
[/php]In $id_utente ha l'id dell'utente.Ihuhhhuuuuu
ci siamo quasi
Facendo così[PHP]
$strsql = "INSERT INTO jos_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
$rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());
$id_utente = mysql_insert_id();$strsql2 = "INSERT INTO jos_core_acl_aro (name, section_value) VALUES ('$name', '$section_value')";
$rs2=@mysql_query ("$strsql2") or die ("Errore di Connessione" .mysql_error());$strsql3 = "INSERT INTO jos_core_acl_aro (value) VALUES ('$id_utente')";
$rs3=@mysql_query ("$strsql3") or die ("Errore di Connessione" .mysql_error());[/PHP]
Succede che... in JOS_USERS è tutto ok come sempre
in JOS_CORE_ACL_ARO crea due record in uno ci sonoi valori (name, section_value) inseriti da $strsql2 e nell'altro c'è il valore (value) inserito da $strsql3.
Devo unirle in un'unica query?
-
Si.
-
-
Scusa ma la tabella non è la stessa in quelle 2 query? Per cui devi semplicemente aggiungere un campo nella query di insert.