View Full Version : [PHP]help sql connection..?
ciao a tutti ho un probblema nella connessione con il db:
Alura:
$db_host = 'localhost',
$db_user = 'root';
$db_password = '';
$db_name = 'infoch';
$provider = 'Sunrise';
$locazione = 'Ticino';
$connessione = mysql_connect($db_host,$db_user,$db_password) or die("non riesco a connetermi al db");
$insdati = "INSERT INTO registro values values ($ip, $provider, $locazion, $browser, $os)";
$result = mysql_query($insdati, $connessione);
if($result)
{
echo"$result";
}
else{
echo"Errore";
}
watt is the problem..??????? :muro:
watt is the problem..??????? :muro:Hai messo 2 volte values
Hai messo 2 volte values
si li e xche ho coppiato male su qui .. -.- xche sto scrivendo con un fisso ma il coice c'è lo sul portatile e allora ho coppiato male, cmq nn dà nessun errore la pagina ma nn scrive nada -.-''
mancano gli apici su tutti i valori che devi inserire..
deve essere fatto così:
$insdati = "INSERT INTO registro values ('".$ip."', '".$provider."', '".$locazion."', ."'$browser."', '".$os."')";
edit: e cmq è buona regola quando non funziona una query farne l'echo e provare a darla in pasto al client mysql
si li e xche ho coppiato male su qui .. -.- xche sto scrivendo con un fisso ma il coice c'è lo sul portatile e allora ho coppiato male, cmq nn dà nessun errore la pagina ma nn scrive nada -.-''Ok ... a parte gli errori di trascrizione (hai messo $locazione = 'Ticino'; ma poi hai scritto $locazion), ci sono altre cose:
- Dovresti mettere i valori che sono delle stringhe tra apici ed eventualmente fare l'escape del contenuto, se sai che ci possono essere caratteri speciali.
- le variabili $ip, $os, $browser sono state definite da qualche parte??
thx provo e poi dico...;)
-.-'' cavoli errori di sintasi nn ne ho le tre variabili le prendo tremite include da un'altr pagine ee alla fine ho messo un echo result ma mi da errore -.- nn capisco :muro: :muro:
ed echo $insdati per vedere il testo della query l'hai fatto?
ed echo $insdati per vedere il testo della query l'hai fatto?
si ma mi stampa come na stringa normale??
cioe stampa fuori "INSDATI.....('192.168.1.1','ticino',....)
???
:muro: :muro: :muro: :muro: :mc: minchia nn riesco ad'uscire da sto vicolo ceco....
nn capisco....
ma allora e normale che la query viene presa come stringa??
ma allora e normale che la query viene presa come stringa??La query è una normalissima stringa.
Fai un echo di $insdati e riportalo qui, così vediamo almeno se la sintassi è corretta.
CODICE:
<?php
/*include'FileStile/php/pannelli/p_Info.php';*/
$db_host = 'localhost';
$db_user = 'root';
$db_password = '';
$ip = '192.168.1.2';
$browser = 'Firefox';
$os = 'MacOSX';
$db_name = 'infoch';
$provider = 'Sunrise';
$locazione = 'CH';
$data = '04.09.07';
$con = mysql_connect($db_host,$db_user,$db_password)or die("non riesco a connettemri al db");
$db = mysql_select_db($db_name, $con)or die("nn riesco a selezionare il db info");
$insdati = "INSERT INTO registro values ('".$ip."', '".$provider."', '".$locazione."', '".$browser."','".$os."','".$data."')";
/*$insdati = "SELECT * FROM registro";*/
$result = mysql_query($insdati, $con);
echo"insdati: $insdati";
if($result){
echo"$result";
}
else{
echo"Errore";
}
?>
Output:
insdati: INSERT INTO registro values('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07')Errore
INSERT INTO registro values('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07')La query, a vista, mi sembra corretta.
Invece di far stampare solo "Errore" fai stampare la stringa che viene restituita da:
mysql_error ($con)
così magari capiamo meglio il problema.
mmm se stampo con mi da : Resource id#2...
quindi ci sono probblemi col id del db..
allora id e la chiave primaria ed è autoincrement...???
mmm se stampo con mi da : Resource id#2...
quindi ci sono probblemi col id del db..
allora id e la chiave primaria ed è autoincrement...???Ripeto: che cosa contiene la stringa ritornata da mysql_error ($con) in caso di errore??
il numero di colonne non corrisponde all conteggio alla riga 1
Em se ci fai vedere la descrizione della tabella magari tutti capiscono il tuo problema :)
Magari fai un esporta della così vediamo i campi...
Bye
id auto increment,stringa'192.168.1.2', stringa'Sunrise', stringa'CH', stringa'Firefox',Stringa'MacOSX',Data:'04.09.07'
id auto increment,stringa'192.168.1.2', stringa'Sunrise', stringa'CH', stringa'Firefox',Stringa'MacOSX',Data:'04.09.07'Nooo, max246 intendeva probabilmente dire la struttura della tabella!!
Esempio:
CREATE TABLE `nome` (
`id` int(12) unsigned NOT NULL auto_increment,
... blabla ...
)
Nooo, max246 intendeva probabilmente dire la struttura della tabella!!
Esempio:
CREATE TABLE `nome` (
`id` int(12) unsigned NOT NULL auto_increment,
... blabla ...
)
mmm -.-'' booo io ho crato la tabella con easyPHP... a livello grafico.. :confused:
mmm -.-'' booo io ho crato la tabella con easyPHP... a livello grafico.. :confused:Bene ... cioè male!
Allora tramite il tool a linea di comando del MySQL (o da qualunque altro tool grafico per MySQL) fai:
DESCRIBE nome_tabella;
o meglio ancora:
SHOW CREATE TABLE nome_tabella;
registro CREATE TABLE `registro` (\n `ID` int(11) NOT NULL auto_increment,\n `IP` varchar(16) NOT NULL default '',\n `Provider` varchar(30) NOT NULL default '',\n `Locazione` varchar(20) NOT NULL default '',\n `Browser` varchar(10) NOT NULL default '',\n `OS` varchar(10) NOT NULL default '',\n `Data` date NOT NULL default '0000-00-00',\n PRIMARY KEY (`ID`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1
:mbe: :confused:
registro CREATE TABLE `registro` (\n `ID` int(11) NOT NULL auto_increment,\n `IP` varchar(16) NOT NULL default '',\n `Provider` varchar(30) NOT NULL default '',\n `Locazione` varchar(20) NOT NULL default '',\n `Browser` varchar(10) NOT NULL default '',\n `OS` varchar(10) NOT NULL default '',\n `Data` date NOT NULL default '0000-00-00',\n PRIMARY KEY (`ID`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1
:mbe: :confused:Allora ti conviene specificare nella INSERT quali colonne impostare!
INSERT INTO registro (`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES (........)
Allora ti conviene specificare nella INSERT quali colonne impostare!
INSERT INTO registro (`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES (........)
e ho gia provato ma nn và :muro: :confused:
e ho gia provato ma nn và :muro: :confused:Per l'ennesima volta: fai una echo di $insdati e di mysql_error ($con) e riporta qui i dati, che vediamo.
Per l'ennesima volta: fai una echo di $insdati e di mysql_error ($con) e riporta qui i dati, che vediamo.
INSERT INTO registro values ('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07')
Il numero delle colonne nn corisponde al conteggio alla riga 1
INSERT INTO registro values ('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07')
Il numero delle colonne nn corisponde al conteggio alla riga 1Ehm .. allora forse non ti è chiaro: secondo te come farebbe MySQL a capire che il primo valore '192.168.1.2' deve essere inserito nel secondo campo `IP` e non nel primo campo `ID`??? :D :p
Non può saperlo! Appunto per quello devi specificare anche in quali colonne mettere i valori. La tua tabella è fatta da 7 campi ma tu nella INSERT hai messo solo 6 valori. Ecco il perché dell'errore.
La documentazione del MySQL è abbastanza chiara su questo punto: "If you do not specify the column list for INSERT ... VALUES or INSERT ... SELECT, values for every column in the table must be provided in the VALUES list or by the SELECT."
Ehm .. allora forse non ti è chiaro: secondo te come farebbe MySQL a capire che il primo valore '192.168.1.2' deve essere inserito nel secondo campo `IP` e non nel primo campo `ID`??? :D :p
Non può saperlo! Appunto per quello devi specificare anche in quali colonne mettere i valori. La tua tabella è fatta da 7 campi ma tu nella INSERT hai messo solo 6 valori. Ecco il perché dell'errore.
La documentazione del MySQL è abbastanza chiara su questo punto: "If you do not specify the column list for INSERT ... VALUES or INSERT ... SELECT, values for every column in the table must be provided in the VALUES list or by the SELECT."
e quindi nel primo campo cosa metto se id si autoincrementa :confused:
e quindi nel primo campo cosa metto se id si autoincrementa :confused:Non devi inserire nulla per l'ID ... è già auto-increment. Devi solo specificare quali colonne e quali valori per i restanti campi. :muro:
Quindi faccio così?
INSERT INTO registro (`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES ('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07');
Quindi faccio così?
INSERT INTO registro (`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES ('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07');Sì, così.
Quindi faccio così?
INSERT INTO registro (`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES ('192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07');
e ma come fà a sapere allora del id??
Questo sarebbe sbagliato?
INSERT INTO registro ('id',`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES ('','192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07');
e ma come fà a sapere allora del id??In che senso? .... guarda che se è dichiarato auto-increment lo gestisce/incrementa il MySQL!!!
Questo sarebbe sbagliato?
INSERT INTO registro ('id',`IP`,`Provider`,`Locazione`,`Browser`,`OS`,`Data`) VALUES ('','192.168.1.2', 'Sunrise', 'CH', 'Firefox','MacOSX','04.09.07');Credo che sia sbagliato.
Ripeto ancora una volta: l'ID lo incrementa/scrive il MySQL se il campo è auto-increment. Se invece ti interessa conoscere il valore dell'ID inserito, allora subito dopo aver fatto la query puoi chiamare la funzione mysql_insert_id($con), la cui documentazione, molto chiaramente, dice: "Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query."
Ma nn vÀ? :muro:
INSERT INTO registro ('IP','Provider','Locazione','Browser','OS','Data') VALUES ("192.168.1.2", "Sunrise", "CH", "Firefox","MacOSX","04.09.07");
Ma nn vÀ? :muro:
INSERT INTO registro ('IP','Provider','Locazione','Browser','OS','Data') VALUES ("192.168.1.2", "Sunrise", "CH", "Firefox","MacOSX","04.09.07");I nomi dei campi vanno messi o senza alcun apice oppure con il back-quote `.
funziona :D :D :sofico: thx;)
mm come mai ID parte da 4-.....??
o meglio se cancello i campi nn viene decrementato id quindi e 1 2 3 se elimino tre vaa a 4 e nn 3??
un'ultima domanda: per fare un create table come facciu?Dipende da dove devi farla e con cosa ...
Io in genere preparo un file .sql con dentro le istruzioni per creare la/e tabella/e e poi invio il file al MySQL. Puoi farlo anche con un tool grafico, ovviamente.
Ma non ho ben capito se il tuo problema è come scrivere l'istruzione per una CREATE TABLE o come eseguirla ...
mm come mai ID parte da 4-.....??Non lo so ... fai una query di SELECT sulla tabella per capire cosa c'è dentro.
o meglio se cancello i campi nn viene decrementato id quindi e 1 2 3 se elimino tre vaa a 4 e nn 3??I numeri degli ID non li recupera, va sempre in avanti. Se l'ultimo ID è 5 e tu cancelli la riga, al prossimo inserimento mette 6 nella nuova riga.
Tra l'altro stavo leggendo adesso la documentazione del MySQL e c'è una cosa che in effetti non mi ricordavo. Il campo ID puoi inserirlo NULL (e se lo gestisce lui), quindi visto che tu scrivi tutti i valori, puoi anche evitare di indicare i campi facendo così:
INSERT INTO registro VALUES (NULL, ........)
Tra l'altro stavo leggendo adesso la documentazione del MySQL e c'è una cosa che in effetti non mi ricordavo. Il campo ID puoi inserirlo NULL (e se lo gestisce lui), quindi visto che tu scrivi tutti i valori, puoi anche evitare di indicare i campi facendo così:
INSERT INTO registro VALUES (NULL, ........)
;) Thx... ma la documentazione la guardi su php.net?
ma la documentazione la guardi su php.net?Beh no, la documentazione propria del MySQL è su http://dev.mysql.com/doc/
satoshi2005
03-01-2007, 09:42
mm come mai ID parte da 4-.....??
o meglio se cancello i campi nn viene decrementato id quindi e 1 2 3 se elimino tre vaa a 4 e nn 3??
Guarda che le hai fatte in prima ste cose..
Guarda che le hai fatte in prima ste cose..
:confused: :confused: :mbe: :muro: ma chi si ricorda ... :rolleyes:
per mettere l'auto increment???
es:
$q_master = "CREATE TABLE prova
(
ID int(5) ,
Nome varchar(20)
)";
come metto "ai" a ID?? :confused:
thx ciauz
per mettere l'auto increment???Esempio:
CREATE TABLE `unatabella` (
`id` INT(12) NOT NULL AUTO_INCREMENT,
....blabla....
PRIMARY KEY(`id`)
)
Esempio:
CREATE TABLE `unatabella` (
`id` INT(12) NOT NULL AUTO_INCREMENT,
....blabla....
PRIMARY KEY(`id`)
)
;) thx
ma l'apici nel nometab e tipo dato sono obblicatori xche io nn li ho messi e va lstesso..
nn me la crea.... :(
<?php
$db_host="localhost";
$db_user="root";
$db_password="";
$db_name="infoch";
//_________________________________
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
{
die ("Errore nella connessione. Verificare i parametri nella config");
}
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nella config");
//query master
$q_master = "CREATE TABLE 'prova'
(
'ID' INT(5) NOT NULL AUTO_INCREMENT,
'Nome' varchar(20),
PRIMARY KEY('ID')
)";
$r_master = mysql_query($q_master, $db);
if ($r_master == FALSE)
{
die ("Errore nella query");
}
else{
echo"Query riuscita";
}
?>
nn me la crea.... :(Già detto ... e lo ripeto: i nomi dei campi vanno messi o senza alcun apice oppure con il back-quote. :rolleyes:
;) ma thx mai salvato il cervello se no andavo in depressione per sto progettino :D :D thx
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.