gucapi Posted July 28, 2006 at 11:31 PM Report #40858 Posted July 28, 2006 at 11:31 PM ola! 😄 com mysql versao 4.1.18-standard que ista instalado no servidor online a seguinte instrução de INSERT funciona: FUNÇÃO EM PHP function comentar($id, $nome, $email, $url, $comentario){ $SQL = "INSERT INTO logs_comments VALUES ('', '$id', '$nome', '$email', '$url', '$comentario', NOW(), '0')"; if($this->bd->executarSQL($SQL)){ return true; }else{ return false; } } no meu pc com a versao 5.0.20 isto já n acontece dá erro, mas se eu for ao phpmyadmin consigo inserir os dados na tabela logs_comments. Apenas a instrução INSERT é que esta a dar problemas ose SELECTS dao bem. alguma sugestao???? ha alguma alteração de uma versao para a outra???? tks
gucapi Posted July 28, 2006 at 11:41 PM Author Report #40859 Posted July 28, 2006 at 11:41 PM "Out of range value adjusted for column 'id' at row 1" este pode ser um possivel erro k dá :S mas nao sei ao certo
M6 Posted July 29, 2006 at 06:04 PM Report #41004 Posted July 29, 2006 at 06:04 PM Para saberes qual é o problema, usa a função mysql_error para identificares em concreto qual o problema. O problema parece-me de simples resolução, ora mostra lá a estrutura da tabela e esse ug vai ser apanhado num instante. Ah, outra coisa, nunca faças INSERT INTO tabela VALUES (...), esse "shot cut" é um excelente "ninho de problemas". Usa a sintaxe completa para garantires que não há problema. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
gucapi Posted July 29, 2006 at 06:15 PM Author Report #41006 Posted July 29, 2006 at 06:15 PM CREATE TABLE `logs_comments` ( `id` int(11) NOT NULL auto_increment, `id_log` int(11) NOT NULL default '0', `nome` varchar(85) NOT NULL default '', `email` varchar(85) NOT NULL default '', `url` varchar(85) NOT NULL default '', `comentario` mediumtext NOT NULL, `data` datetime NOT NULL default '0000-00-00 00:00:00', `view` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; este é o erro que dá axo eu: "Out of range value adjusted for column 'id' at row 1" acabei de alterar o comando de insert para o seguinte e da o mesmo erro $SQL = "INSERT INTO logs_comments (id, id_log, nome, email, url, comentario, data, view) VALUES ('', '$id', '$nome', '$email', '$url', '$comentario', NOW(), '0')";
M6 Posted July 29, 2006 at 06:47 PM Report #41011 Posted July 29, 2006 at 06:47 PM A solução é fácil: o ID é um autoincrement, não tens, nem deves, especificá-lo. $SQL = "INSERT INTO logs_comments (id_log, nome, email, url, comentario, data, view) VALUES ('$id', '$nome', '$email', '$url', '$comentario', NOW(), '0')"; Um conselho: aprende BD (modelo lógico, modelo fíciso, sql, etc.) antes de tentares fazer o que quer que seja. Se continuares a fazer coisas sem saber o que fazes vais continuar a esbarrar em problemas "idiotas" como este. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
gucapi Posted July 29, 2006 at 08:00 PM Author Report #41021 Posted July 29, 2006 at 08:00 PM pa isto sao tabelas feitas pelo phpmyadmin, nunca tive problemas kuando usava as versoes antigas do mysql, n tenho culpa k kuando fazem upgrades façam cenas e altere cenas k dpois coisas feitas nas versoes antigas n funcionem :S opa n digo k saiba tudo de bd sei o minimo para por um site a funcionar minimamente agr k culpa tenho eu se bases de dados feitas com versoes antigas do mysql n funcionem nas versoes + recentes :s desculpa o incomudo
gucapi Posted July 29, 2006 at 08:03 PM Author Report #41022 Posted July 29, 2006 at 08:03 PM ja agr tirei o id $SQL = "INSERT INTO logs_comments (id_log, nome, email, url, comentario, data, view) VALUES ('', '$id', '$nome', '$email', '$url', '$comentario', NOW(), '0')"; e continua a n deixar adicionar vou continuar a ver
M6 Posted July 29, 2006 at 08:05 PM Report #41023 Posted July 29, 2006 at 08:05 PM pa isto sao tabelas feitas pelo phpmyadmin, nunca tive problemas kuando usava as versoes antigas do mysql, n tenho culpa k kuando fazem upgrades façam cenas e altere cenas k dpois coisas feitas nas versoes antigas n funcionem :S Calma jovem. Não culpes o o phpMyAdmin e o MySQL pela tua ingorância. opa n digo k saiba tudo de bd sei o minimo para por um site a funcionar minimamente agr k culpa tenho eu se bases de dados feitas com versoes antigas do mysql n funcionem nas versoes + recentes :s Se és o responsável pelo funcionamento de algo e a coisa não funciona, então a responsabilidade é tua. A verdade é que não sabes o mínimo para colocar um site a funcionar, sabes apenas algumas coisas, daí te ter dito para aprenderes BDs. Para saberes o mínimo tens de saber a base, isso sim é o mínimo. desculpa o incomudo Não é incómodo nenhum. O que disse foi para teu próprio bem. Podes passar horas ou dias a fio empancado num problema sem jeito nenhum, por isso deves aprender BDs. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
gucapi Posted July 29, 2006 at 08:16 PM Author Report #41025 Posted July 29, 2006 at 08:16 PM entao desculpa la se sou ignorante... a tua solução n resultou :S atenção n t tou a chamar ignorante :
M6 Posted July 29, 2006 at 08:20 PM Report #41026 Posted July 29, 2006 at 08:20 PM entao desculpa la se sou ignorante... A ignorância não é mal nenhum, a burrice sim! 😄 a tua solução n resultou :S atenção n t tou a chamar ignorante : Dá o mesmo erro? Em vez de fazeres o insert, mostra o comando que ele vai executar, com as variáveis instanciadas. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
kingless Posted July 30, 2006 at 02:11 AM Report #41088 Posted July 30, 2006 at 02:11 AM gucapi tenta assim $SQL = "INSERT INTO logs_comments (id_log, nome, email, url, comentario, data, view) VALUES (NULL, '$nome', '$email', '$url', '$comentario', NOW(), '0')"; Mas acho que vai dar tudo ao mesmo...
gucapi Posted July 30, 2006 at 03:10 PM Author Report #41134 Posted July 30, 2006 at 03:10 PM bem é assim eu vou seguir os conselhos do M6 vou dar a solução do problema: function comentar($id, $nome, $email, $url, $comentario){ $SQL = "INSERT INTO logs_comments (id_log, nome, email, url, comentario, data, view) VALUES ('$id', '$nome', '$email', '$url', '$comentario', NOW(), '0')"; if($this->bd->executarSQL($SQL)){ return true; }else{ return false; } } ora bem o erro era este: function comentar($id, $nome, $email, $url, $comentario){ $SQL = "INSERT INTO logs_comments (id_log, nome, email, url, comentario, data, view) VALUES ('AKI ESTE ID DE AUTOINCREMENTAÇÃO', '$id', '$nome', '$email', '$url', '$comentario', NOW(), '0')"; if($this->bd->executarSQL($SQL)){ return true; }else{ return false; } } eu retirei as plicas e agr funciona é estranho é porque é que nas versoes anteriores à 5 do mysql isto dava certo :s (pelo menos agr assim funciona) muito obrigado pela ajuda. M6 tks
kingless Posted July 30, 2006 at 05:25 PM Report #41143 Posted July 30, 2006 at 05:25 PM Se id_log é auto_increment não precisas defenir id_log por isso colocar $id é inutil só precisas de colocar NULL mas se já esta resolvido ainda bem. 🙂
gucapi Posted July 30, 2006 at 07:12 PM Author Report #41156 Posted July 30, 2006 at 07:12 PM pois mas a tabela era id - autoincremente id_log etc ect mas pronto obrigado mais uma vez
kingless Posted July 30, 2006 at 07:40 PM Report #41160 Posted July 30, 2006 at 07:40 PM Então id fica NULL acho que entendeste o que queria dizer.
completo77 Posted August 2, 2006 at 01:03 PM Report #41700 Posted August 2, 2006 at 01:03 PM a maneira mais fácil e clara de fazer inserts em php é: $query = " INSERT INTO tabela SET campo1='$var1', campo2='$var2', campo3='$var3', ... campoN='$varN', "; assim não é necessário meter os autoincrements, não é necessário meter as coisas pela ordem que estão na tabela, é muito mais fácil a leitura e só se metem os campos que se querem (os restantes ficam com o valor default). Alguem me explica para que é que serve a porra do XML ?
M6 Posted August 2, 2006 at 01:50 PM Report #41710 Posted August 2, 2006 at 01:50 PM a maneira mais fácil e clara de fazer inserts em php é: Estou enganado ou isso nada a tem a ver com o PHP, mas sim com a base de dados? $query = " INSERT INTO tabela SET campo1='$var1', campo2='$var2', campo3='$var3', ... campoN='$varN', "; O único problema com esta sintaxe é que a mesma não é standard, ou seja, nem todos os SGBDs suportam isso. Isto apenas é um problema se a aplicação tiver de funcionar com outros SGBDs como backend. assim não é necessário meter os autoincrements, não é necessário meter as coisas pela ordem que estão na tabela, é muito mais fácil a leitura e só se metem os campos que se querem (os restantes ficam com o valor default). Nunca é necessário meter os autoincrements, eles são geridos pelo próprio SGBD. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
completo77 Posted August 2, 2006 at 06:06 PM Report #41781 Posted August 2, 2006 at 06:06 PM Em 02/08/2006 às 15:50, M6 disse: Estou enganado ou isso nada a tem a ver com o PHP, mas sim com a base de dados? Humm... tens razão Em 02/08/2006 às 15:50, M6 disse: O único problema com esta sintaxe é que a mesma não é standard, ou seja, nem todos os SGBDs suportam isso. Isto apenas é um problema se a aplicação tiver de funcionar com outros SGBDs como backend. Ele está a falar de MySQL. E se há tanta preocupação com isso o melhor era usar logo o PEAR. Em 02/08/2006 às 15:50, M6 disse: Nunca é necessário meter os autoincrements, eles são geridos pelo próprio SGBD. Se na definição meter o campo de auto-incremento então nos VALUES têm de meter '' ou NULL. Mas ok... ele pode usar a sintaxe que estava a usar e tirar o campo de auto-incremento. De qualquer maneira axo a forma que uso muito mais clara eprincipalmente fácil de modificar e corrigir erros. 😛 Alguem me explica para que é que serve a porra do XML ?
M6 Posted August 3, 2006 at 10:32 AM Report #41908 Posted August 3, 2006 at 10:32 AM Em 02/08/2006 às 15:50, M6 disse: O único problema com esta sintaxe é que a mesma não é standard, ou seja, nem todos os SGBDs suportam isso. Isto apenas é um problema se a aplicação tiver de funcionar com outros SGBDs como backend. Ele está a falar de MySQL. E se há tanta preocupação com isso o melhor era usar logo o PEAR. Sim eu sei que aqui é MySQL. O que eu estava a dizer é que se a aplicação for desenhada com o propósito de poder trabalhar com outras BDs, então há que ter em conta que o SQL usado deve ser standard. Não havendo essa preocupação, pois pode-se (e deve-se) afinar o SQL para o SGBD especifico. Citação Se na definição meter o campo de auto-incremento então nos VALUES têm de meter '' ou NULL. Mas ok... ele pode usar a sintaxe que estava a usar e tirar o campo de auto-incremento. De qualquer maneira axo a forma que uso muito mais clara eprincipalmente fácil de modificar e corrigir erros. 😛 Olha que não. Um campo auto-incremento basta ser "ignorado" no insert, ou seja, não fazer qualquer referência a ele e o SGBD trata de lhe dar um valor. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now