- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Stranezza in mysql
-
Stranezza in mysql
E' da parecchio che sto cercando di capire come mai in un sito fatto da zero per bene e hostato su un vps linux ci siano dei bug nonostante l'esattezza del codice a riguardo controllato un infinità di volte...dopo parecchio ho scoperto che qualche volta è come se non vedesse l'esistenza di alcuni campi perchè eseguendo per esempio una query UPDATE con sintassi coretta, i cui valori sono corretti e compatibili con il tipo dell'attributo che si deve modificare c'è un attributo che non viene modificato mentre gli altri della query sì e senza problemi, non risulta nessun errore e nel codice non ci sono errori, neppure di compatibilità con il tipo come già detto; in pratica è come se ogni tanto non vede un certo attrubuto o non lo modifica senza alcun valido motivo e senza riportare errori e non so più dove sbattere la testa:x
a qualcuno son già successe cose simili e/o è in grado di aiutarmi, per favore?
-
qualche dettaglio in + non si può avere?
tipo versione mysql usata
linguaggioqualche pezzo di codice magari....
ciao!
-
versione mysql 4.1.20 linguaggio che ci interagisce php
una query in cui qualche volta è successa la cosa strana è questa:
UPDATE utenti SET cibo=cibo-".(150*$_POST['numerolav']).",lavoratori=lavoratori+'".$_POST['numerolav']."',punteggio=punteggio+'".(10*$_POST['numerolav'])."' WHERE userid='".$user['userid']."'
nn da errori ed esegue giusto tutto tranne cibo=cibo-".(150*$_POST['numerolav'])."
-
hai cambiato host? o tu sappia il tuo hoster ha cambiato qualcosa nella configurazione di mysql?
questo tipo capita solitamente quando il valore specificato non è dello stesso tipo dell'attributo!!
ma se tu dici che è tutto ok....
-
sono su un vps e questa è la configuarazione attuale in my.cnf:
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sockDefault to using old password format for compatibility with mysql 3.x
clients (those using the mysqlclient10 compatibility package).
old_passwords=1
skip-bdb
set-variable = innodb_thread_concurrency=2
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-bdb
set-variable = innodb_thread_concurrency=2
-
potresti incollarmi la descrizione della tabella incriminata con il tipo di ogni campo???
dovresti anche controllare il valore di 150*$_POST['numerolav']
in caso prova a mettere backtickscibo
=cibo
-(150*....)metti un echo prima dell'esecuzione della query e vedi cosa printa...
Grazie!
-
Provato a fargli fare quella moltiplicazione a parte?
Ovvero...
[PHP] $moltiplicazione = 150*$_POST['numerolav'];[/PHP]
e poi...
[PHP] SET cibo=cibo-".$moltiplicazione[/PHP]
-
provato a printare ma esce esatto, per quanto riguarda i tipi tutti e 3 gli attributi sono mediumint(7)
-
e il valore di cibo qual'è?
e il valore di 150*$_POST['numerolav'] ?
-
stampando la query esce:
UPDATE utenti SET cibo=cibo-'150',lavoratori=lavoratori+'1',punteggio=punteggio+'10' WHERE userid='1'
provato a togliere gli ' e non cambia niente
-
per caso non e che cibo e mediumint unsigned?
-
non è unsigned mentre gli altri 2 sì