login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MySQL fout?

Offline BigBug - 16/11/2008 15:06
Avatar van BigBugPHP expert
  1. mysql_query("INSERT INTO pm (from, to, subject, message, date, time) VALUES ('".addslashes($_SESSION['userid'])."', '".$res['id']."', '".addslashes(htmlentities($_POST['ow']))."', '".addslashes(htmlentities($_POST['bericht']))."', '".addslashes(date("d-m-Y"))."', '".addslashes(time())."')") or die(mysql_error());
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from, to, subject, message, date, time) VALUES ('1', '1', 'hoi', 'dit is een dom' at line 1
  1. CREATE TABLE `pm` (
  2. `id` TINYINT NOT NULL AUTO_INCREMENT ,
  3. `from` TINYINT NOT NULL ,
  4. `to` TINYINT NOT NULL ,
  5. `subject` VARCHAR( 50 ) NOT NULL ,
  6. `message` LONGTEXT NOT NULL ,
  7. `date` VARCHAR( 14 ) NOT NULL ,
  8. `time` INT NOT NULL ,
  9. PRIMARY KEY ( `id` )
  10. ) TYPE = MYISAM ;


Tja, ik zie de fout zo gauw niet... Ik hoop dat een van jullie 'm vind? Volgens mijn uitsluitsysteem moet de fout hier zitten 


14 antwoorden

Gesponsorde links
Offline Abbas - 16/11/2008 15:14 (laatste wijziging 16/11/2008 15:14)
Avatar van Abbas Gouden medaille

Crew .NET
Waarschijnlijk een foutmelding omdat "from" een keyword is in SQL. Dus die kolom een andere naam geven! 
Offline BigBug - 16/11/2008 15:15 (laatste wijziging 16/11/2008 15:21)
Avatar van BigBug PHP expert Pff, stelletje rukkers daar Ik zal het eens proberen  

EDIT

Dat is het probleem niet from namechanged naar 'root' geeft:

  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'to, subject, message, date, time) VALUES ('1', '1', 'hoihoi', 'bladlkfjal sdjfla' at line 1


:(
Offline Diko - 16/11/2008 15:21
Avatar van Diko PHP interesse
  1. INSERT INTO pm (`from`, `to`, `subject`, `message`, `date`, `time`) VALUES ('".(int)$_SESSION['userid']."',
  2. '".(int)$res['id']."', '".addslashes(htmlentities($_POST['ow']))."', '".addslashes(htmlentities($_POST['bericht']))."', '".addslashes(date("d-m-Y"))."', '".addslashes(time())."')"


Normaal gebruik ik geen backtics, maar omdat mysql de velden date en time mogelijk herkend als gereserveerde woorden heb ik zo toch maar toegevoegd. Verder gebruik je quotes en addslashes op integer waardes. En addslashes op je date functie is ook nogal overbodig. Als je van je date geen varchar maar een timestamp maakt kun je opgeven NOW() in plaats van zelf in php een datum te genereren.
Offline BigBug - 16/11/2008 15:27
Avatar van BigBug PHP expert Het werkt nu iniedergeval wel! Bedankt.

Nog een klein vraagje,.. waarom voeg je (int) toe voor int waardes?

En als ik het goed begrijp is addslashes buiten integers overbodig?
Offline Rens - 16/11/2008 15:31
Avatar van Rens Gouden medaille

Crew algemeen
BigBug schreef:
En als ik het goed begrijp is addslashes buiten integers overbodig?


Als jij controleerd of het echt een integer is (bijv. met PHP.net: ctype_digit) is dat inderdaad overbodig.
In een integer kunnen namelijk nooit andere tekens zitten dan cijfers, anders is het geen integer meer.
Offline Ultimatum - 16/11/2008 15:32
Avatar van Ultimatum PHP expert Ik weet dat het probleem al is opgelost maar kijk eens naar deze link. Heel handig als je volgende keer dit wilt voorkomen 
http://www.site...de_woorden
Offline BigBug - 16/11/2008 15:33
Avatar van BigBug PHP expert Als ik controleerT met is_numeric(); moet dat ook goed zijn?
Offline Rens - 16/11/2008 15:36 (laatste wijziging 16/11/2008 15:36)
Avatar van Rens Gouden medaille

Crew algemeen
Er is een groot verschil tussen is_numeric en ctype_digit.
is_numeric accepteerd ook wiskundige notaties.

Het verschil
is_numeric:
Citaat:
'42' is numeric
'1337' is numeric
'1e4' is numeric
'not numeric' is NOT numeric
'Array' is NOT numeric
'9.1' is numeric


ctype_digit:
Citaat:
'42' is ctype_digit
'1337' is ctype_digit
'1e4' is NOT ctype_digit
'not numeric' is NOT ctype_digit
'Array' is NOT ctype_digit
'9.1' is NOT ctype_digit
Offline skillat2 - 16/11/2008 17:34
Avatar van skillat2 HTML beginner PHP.net: is_int is wel mogelijk toch ?
Offline Diko - 16/11/2008 22:54
Avatar van Diko PHP interesse Als je (int) ervoor zet zorg je dat er onder geen beding een string/array ingevoerd kan worden.

(int) '12uur' = 12
(int) 1337 = 1337
(int) schoenlepel = ''

Offline Rens - 16/11/2008 23:25
Avatar van Rens Gouden medaille

Crew algemeen
skillat2 schreef:
PHP.net: is_int is wel mogelijk toch ?

Het resultaat met PHP.net: is_int:
Citaat:
42 is NOT numeric
1337 is numeric
1e4 is NOT numeric
not numeric is NOT numeric
Array is NOT numeric
9.1 is NOT numeric

Input:
  1. $tests = Array(
  2. "42",
  3. 1337,
  4. "1e4",
  5. "not numeric",
  6. Array(),
  7. 9.1
  8. );

Let op de double quotes rond de 42, vandaar dat hij NOT numeric geeft.
Offline MiST - 17/11/2008 00:38
Avatar van MiST Lid Eek das vies. Maarja, data type is ook geen integer op de manier met de quotes. Wat met enkele quotes? 

Beter casten dan...
Offline Giant - 17/11/2008 07:33
Avatar van Giant PHP beginner wat is er mis met:

PHP.net: is_numeric ?
Offline Gerard - 17/11/2008 10:16
Avatar van Gerard Ouwe rakker
Giant schreef:
wat is er mis met:

PHP.net: is_numeric ?


Lees de reactie van Rens eens op de eerste pagina. Daar wordt het uitstekend uitgelegd waarom dat PHP.net: is_numeric gewoon niet goed genoeg is voor dit soort toepassingen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.224s