Toon posts:

mysql query error.. snap er nix van :S

Pagina: 1
Acties:
  • 40 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb de volgende query:
PHP:
1
2
3
// vul info in in db!
    $result = mysql_query("INSERT INTO reviews (system, game, inleiding, review, pluspunt1, pluspunt2, pluspunt3, pluspunt4, pluspunt5, minpunt1, minpunt2, minpunt3, minpunt4, minpunt5, spelinfo1, spelinfo2, spelinfo3, spelinfo4, spelinfo5, quote, conclusie, score1, score2, score3, score4, score5, datum, auteur, handtekening) VALUES ('$system', '$game', '$inleiding', '$review', '$pluspunt1', '$pluspunt2', '$pluspunt3', '$pluspunt4', '$pluspunt5', '$minpunt1', '$minpunt2', '$minpunt3', '$minpunt4', '$minpunt5', '$spelinfo1', '$spelinfo2', '$spelinfo3', '$spelinfo4', '$spelinfo5', '$quote', '$conclusie', '$score1', '$score2', '$score3', '$score4', '$score5', '$datum', '$auteur', '$handtekening')") or die (mysql_error());
    echo "Posted!";

Maar hij geeft de volgende error:
You have an error in your SQL syntax near '' at line 1
Nou vraag ik me af wat er fout aan is na het 5x te hebben doorgelopen :? :?
Is het misschien te lang? (te veel velden?) In dat geval, weet iemand hoe ik dit wel werkend kan krijgen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:44

gorgi_19

Kruimeltjes zijn weer op :9

Het ziet er op zich goed uit. Zou je hem anders eens op je scherm kunnen zetten door middel van "echo" en deze hier posten? Best kans dat er ' inzitten. o.i.d.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

worden alle variabele gechecked op ', oftewel worden hier slashes voor gezet.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

what the ... Wat een tabel!

Maar goed, wat RobinVR bedoelt (hoop ik ;)) is kijk even naar de functie mysql_escape_string

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • -Tibo-
  • Registratie: Januari 2002
  • Niet online

-Tibo-

ow = teh

Ik neem aan dat de velden score[x] numerieke velden zijn bv een INT, dan moeten er geen single quotes om de variabelen dus ,$score1, en niet ,'$score1',

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 15:10
Een van je variabele heeft lengte 0. (is leeg)
Daardoor verandert er een '$variabele' in '' :)

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


Verwijderd

drm schreef op 04 oktober 2002 @ 17:47:
what the ... Wat een tabel!

Maar goed, wat RobinVR bedoelt (hoop ik ;)) is kijk even naar de functie mysql_escape_string

dat bedoel ik ja :+
Ik neem aan dat de velden score[x] numerieke velden zijn bv een INT, dan moeten er geen single quotes om de variabelen dus ,$score1, en niet ,'$score1',
Dat kan geen oorzaak zijn van deze fout.
Een van je variabele heeft lengte 0. (is leeg)
Daardoor verandert er een '$variabele' in ''
en dat ook niet.

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
OK ff offtopic:
is het niet makkelijker om voor al die 12345 dingetjes een aparte tabel te maken en vervolgens gaan JOINen enzo?

Verwijderd

/dev/null schreef op 04 oktober 2002 @ 18:32:
OK ff offtopic:
is het niet makkelijker om voor al die 12345 dingetjes een aparte tabel te maken en vervolgens gaan JOINen enzo?
of het makkelijker is........... ligt aan de programmeur.....
maar het is sowiezo netter denk ik. :+

  • simon
  • Registratie: Maart 2002
  • Laatst online: 15:17
misschien is het zo:

code:
1
INSERT INTO blaat ding='$ding' WHERE ding='1'


(uit me hoofd, als het fout is sorry.)
helderder?

|>


  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

als een van je variabelen " bevat gaat ie over de zeik :)

Ik bespeur hier een zekere mate van onethische logica.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Jackabuzah schreef op 04 oktober 2002 @ 20:15:
misschien is het zo:

code:
1
INSERT INTO blaat ding='$ding' WHERE ding='1'


(uit me hoofd, als het fout is sorry.)
helderder?

Lees nou de opmerkingen van RobinVR en drm en ga ajb geen foute adviezen geven :)
Bovenstaande is iig geen geldig sql.

  • DaRKie
  • Registratie: December 2001
  • Laatst online: 20-08 15:40
bij mijn weten moet je om in een (my)sql databank gegevens in te vulle deze code gebruiken:
insert into <table> values (<values>)

DUS: zet eens values voor het (-haakje en je zult zien dat het werkt :)

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

DaRKie schreef op 04 oktober 2002 @ 20:24:
bij mijn weten moet je om in een (my)sql databank gegevens in te vulle deze code gebruiken:
insert into <table> values (<values>)

DUS: zet eens values voor het (-haakje en je zult zien dat het werkt :)
niet als er geen addslashes staan

Ik bespeur hier een zekere mate van onethische logica.


  • DaRKie
  • Registratie: December 2001
  • Laatst online: 20-08 15:40
Bolk schreef op 04 oktober 2002 @ 20:24:
[...]


niet als er geen addslashes staan
welke slashes? ik zie er geen staan :)

EDIT: ik zie het
regel is wat lang, was me nog niet opgevallen :)

Verwijderd

Wat bij mij altijd tot de oplossing leidt:
PHP:
1
2
$query = "SELECT * FROM $table WHERE id = $id";
mysql_query($query) or die (mysql_error());


als je een sql-error krijgt, echo je simpelweg even de query:
PHP:
1
2
3
$query = "SELECT * FROM $table WHERE id = $id";
//mysql_query($query) or die (mysql_error());
echo $query;

en je ziet gelijk wat er fout gaat, mits je een beetje SQL kent natuurlijk...

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
performance technisch zou ik die table uit elkaar trekken , want kost je zo veel tablespace die ongebruikt blijft

plaats hier is de geechode sql string

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
VALUES

damn wat een lange query, ik zeg al niks meer :)

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Verwijderd schreef op 04 oktober 2002 @ 17:07:
Ik heb de volgende query:
PHP:
1
2
$query = "INSERT INTO 
reviews (system, game, inleiding, review, pluspunt1, pluspunt2, pluspunt3, pluspunt4, pluspunt5, minpunt1, minpunt2, minpunt3, minpunt4, minpunt5, spelinfo1, spelinfo2, spelinfo3, spelinfo4, spelinfo5, quote, conclusie, score1, score2, score3, score4, score5, datum, auteur, handtekening) VALUES ('$system', '$game', '$inleiding', '$review', '$pluspunt1', '$pluspunt2', '$pluspunt3', '$pluspunt4', '$pluspunt5', '$minpunt1', '$minpunt2', '$minpunt3', '$minpunt4', '$minpunt5', '$spelinfo1', '$spelinfo2', '$spelinfo3', '$spelinfo4', '$spelinfo5', '$quote', '$conclusie', '$score1', '$score2', '$score3', '$score4', '$score5', '$datum', '$auteur', '$handtekening')");

[...]
Wat ik me laatst aangeleerd heb, is alle queries in deze vorm te maken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
$query = "INSERT INTO 
            reviews 
            (
              system, 
              game, 
              inleiding, 
              review, 
              pluspunt1, 
              pluspunt2, 
              pluspunt3, 
              pluspunt4, 
              pluspunt5, 
              minpunt1, 
              minpunt2, 
              minpunt3, 
              minpunt4, 
              minpunt5, 
              spelinfo1, 
              spelinfo2, 
              spelinfo3, 
              spelinfo4, 
              spelinfo5, 
              quote, 
              conclusie, 
              score1, 
              score2, 
              score3, 
              score4, 
              score5, 
              datum, 
              auteur, 
              handtekening
            ) 
          VALUES 
            (
              '$system', 
              '$game', 
              '$inleiding', 
              '$review', 
              '$pluspunt1', 
              '$pluspunt2', 
              '$pluspunt3', 
              '$pluspunt4', 
              '$pluspunt5', 
              '$minpunt1', 
              '$minpunt2', 
              '$minpunt3', 
              '$minpunt4', 
              '$minpunt5', 
              '$spelinfo1', 
              '$spelinfo2', 
              '$spelinfo3', 
              '$spelinfo4', 
              '$spelinfo5', 
              '$quote', 
              '$conclusie', 
              '$score1', 
              '$score2', 
              '$score3', 
              '$score4', 
              '$score5', 
              '$datum', 
              '$auteur', 
              '$handtekening'
            )
          ";

Het levert in dit geval een lap tekst op, maar dan weet je iig zeker dat er in je code van de query zelfs niks fout is, dat het in de uitvoer moet zitten dus.

Ik dacht in het begin ook: wtf waarom zo moeilijk onder elkaar, maar geloof me: als je dit eenmaal aanhoudt, kan je heel erg makkelijk extra values toevoegen, of bij een where een conditie erbij zetten enz...

Ook Knor is aangestoken met het ligfietsvirus!


  • Ariejan
  • Registratie: Februari 2001
  • Laatst online: 27-07 16:44
In MySQL staat waarschijnlijk dat een van die velden niet-NULL mag zijn. (default), dus als 'n variable geen waarde heeft, is die dus NULL, en dat mag niet!!

Misschien is het een idee om je tabel wat uit te splitsen zodat het een wat logischer geheel wordt?

Computeraar - Part-time Maker van Geluiden - https://neuroslasher.bandcamp.com


  • raphidae
  • Registratie: Februari 2001
  • Laatst online: 06-01-2025

raphidae

...antichrist...

Verwijderd schreef op 04 oktober 2002 @ 18:05:

quote:
--------------------------------------------------------------------------------
Een van je variabele heeft lengte 0. (is leeg)
Daardoor verandert er een '$variabele' in ''

--------------------------------------------------------------------------------

en dat ook niet.
Ik kan die error reproduceren op deze manier.

Als je ook kijkt naar de error die ie neergezet heeft dan zijn het twee losse ' en niet een ".

Every morning is the dawn of a new error.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ariejan schreef op 05 oktober 2002 @ 09:33:
In MySQL staat waarschijnlijk dat een van die velden niet-NULL mag zijn. (default), dus als 'n variable geen waarde heeft, is die dus NULL, en dat mag niet!!

Misschien is het een idee om je tabel wat uit te splitsen zodat het een wat logischer geheel wordt?

Jij werkt nooit met mysql zeker? :)

Bij mysql geldt '' != NULL itt oracle.
Dus geen een lege waarde is nog geen null. Daarnaast heeft mysql de ongelofelijk vieze neiging alle waarden verplicht van een default te voorzien, ook al geef je op dat dat niet mag.
raphidae schreef op 05 oktober 2002 @ 09:36:
Ik kan die error reproduceren op deze manier.

Als je ook kijkt naar de error die ie neergezet heeft dan zijn het twee losse ' en niet een ".
Even voor de duidelijkheid dan maar:
Als je:
insert ... values ('', '', '');
doet vindt mysql dat niet erg.
Doe je echter:
insert ... values (''', '', '');
Dan vindt ie dat wel erg...
insert ... values ('bla'bla', '$bla', ''); natuurlijk ook. En als $bla de waarde "tra'la" had bevat ook...

Oplossing: mysql_escape_string over alle waarden tussen je '' halen, tenzij je het handmatig invoert, dan kan je er gewoon van elke ' een '' of \' maken.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

nog iets:
Het near '' gedeelte zegt niets over de error in dit geval. Dit omdat MySQL het near altijd quote.

voorbeeldje1:
code:
1
INSERT INTO sjaak melp VALUES()

error:
You have an error in your SQL syntax near 'melp VALUES()' at line 1
voorbeeldje2
code:
1
INSERT INTO
error:
You have an error in your SQL syntax near '' at line 1
note the quotes :Y) ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
/dev/null schreef op 04 oktober 2002 @ 18:32:
OK ff offtopic:
is het niet makkelijker om voor al die 12345 dingetjes een aparte tabel te maken en vervolgens gaan JOINen enzo?
Explain, ik vond het zelf ook niet echt nuttig maar heb niet ubermega veel ervaring met mysql, en deed daarom maar gewoon zo, leek me het makkelijkst.

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
if ( $_POST[action] == 'post' ) 
    {
    function AuteurNaam($id)    
        {
        $query = "SELECT username FROM members WHERE id = $id";
        $result = mysql_query($query) or die (mysql_error());
        $record = mysql_fetch_object($result);
        return $record->username;
        }
    function AuteurHandtekening($id)    
        {
        $query = "SELECT handtekening FROM members WHERE id = $id";
        $result = mysql_query($query) or die (mysql_error());
        $record = mysql_fetch_object($result);
        return $record->handtekening;
        }
// Add slashes aan alle variabelen
    $system = addslashes($_POST[system]);
    $game = addslashes($_POST[game]);
    $inleiding = addslashes($_POST[inleiding]);
    $review = addslashes($_POST[review]);
    $pluspunt1 = addslashes($_POST[pluspunt1]);
    $pluspunt2 = addslashes($_POST[pluspunt2]);
    $pluspunt3 = addslashes($_POST[pluspunt3]);
    $pluspunt4 = addslashes($_POST[pluspunt4]);
    $pluspunt5 = addslashes($_POST[pluspunt5]);
    $minpunt1 = addslashes($_POST[minpunt1]);
    $minpunt2 = addslashes($_POST[minpunt2]);
    $minpunt3 = addslashes($_POST[minpunt3]);
    $minpunt4 = addslashes($_POST[minpunt4]);
    $minpunt5 = addslashes($_POST[minpunt5]);
    $spelinfo1 = addslashes($_POST[spelinfo1]);
    $spelinfo2 = addslashes($_POST[spelinfo2]);
    $spelinfo3 = addslashes($_POST[spelinfo3]);
    $spelinfo4 = addslashes($_POST[spelinfo4]);
    $spelinfo5 = addslashes($_POST[spelinfo5]);
    $quote = addslashes($_POST[quote]);
    $conclusie = addslashes($_POST[conclusie]);
    $score1 = addslashes($_POST[score1]);
    $score2 = addslashes($_POST[score2]);
    $score3 = addslashes($_POST[score3]);
    $score4 = addslashes($_POST[score4]);
    $score5 = addslashes($_POST[score5]);
    $datum = date("d-m-Y");
    $auteur = AuteurNaam($_POST[auteur]);
    $handtekening = AuteurHandtekening($_POST[auteur]);
// vul info in in db!
    $query = "INSERT INTO reviews (system, game, inleiding, review, pluspunt1, pluspunt2, pluspunt3, pluspunt4, pluspunt5, minpunt1, minpunt2, minpunt3, minpunt4, minpunt5, spelinfo1, spelinfo2, spelinfo3, spelinfo4, spelinfo5, quote, conclusie, score1, score2, score3, score4, score5, datum, auteur, handtekening) VALUES ('$system', '$game', '$inleiding', '$review', '$pluspunt1', '$pluspunt2', '$pluspunt3', '$pluspunt4', '$pluspunt5', '$minpunt1', '$minpunt2', '$minpunt3', '$minpunt4', '$minpunt5', '$spelinfo1', '$spelinfo2', '$spelinfo3', '$spelinfo4', '$spelinfo5', '$quote', '$conclusie', '$score1', '$score2', '$score3', '$score4', '$score5', '$datum', '$auteur', '$handtekening')";
    mysql_query($query) or die (mysql_error());
    echo "Done!";
    }

Hier de hele IF, je ziet dat ik de ' en "'s skip.. dus ik :?

Verwijderd

Topicstarter
schop

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

:Z lesje debuggen hebben, ofzo :?

Print de query die je probeert uit te voeren eens naar 't scherm, analyseer 'm even zelf en kom daarna tot de conclusie wat er fout gaat, in plaats van te denken dat we hier meteen de fout aan kunnen wijzen in zulke code... :/

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zie drm
wij zijn niet "de eerste hulp bij debuggen"

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.