Archief - php: mysql_query() error

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

DarkBone

Legacy Member
Als ge zo'n error krijgt moet ge direct eens uw mysql_error() bekijken en tevens uw SQL bekijken, nu is het echter overduidelijk:

"VALUES('"

Er moet een spatie tussen die VALUES en uw haakje, zo dus:

"VALUES ('"

DarkBone

Legacy Member
Geef dan toch eens de mysql_error() output en beeld je ingevulde SQL query af!
Of praat ik hier tegen de muren?

GuntherDW

Legacy Member
ik heb zelf ondervonde da 'DELETE FROM ... WHERE ID = $id' ni werkt, maar
'DELETE FROM `...` WHERE ID = $id' wel...

dJeez

Legacy Member
GuntherDW zei:
ik heb zelf ondervonde da 'DELETE FROM ... WHERE ID = $id' ni werkt, maar
'DELETE FROM `...` WHERE ID = $id' wel...

Dan zal je wel een gereserveerd woord als tabelnaam gebruikt hebben, anders is dat nl. totaal overbodig.

killer bel

Legacy Member
ja idd, het werkt niet of maakt het zelf erger.
dan krijg ik dit:
You have an error in your SQL syntax near ''forum' (naam, bericht)VALUES ('killer bel','Test test test ')' at line 1

en darkbone, neen je praat niet tegen de muren.
Waar moet ik die mysql_error() dan plaatsen? Ik heb om overal al gezet en altijd krijg ik een foutmelding dat hij fout staat.

DarkBone

Legacy Member
Da's omdat ge de verkeerde quotes gebruikt killer bel, degene die GuntherDW gebruikt zijn deze ` ` en da's niet hetzelfde als die die jij gebruikt ' '. Maar daar zou het niet mogen aan liggen hoor.

*Edit*
Ik zie net de tweede fout, net als aan de rechterkant van het woord VALUES moet er ook aan de linkerkant een spatie tussen het haakje en het keyword.

INSERT_INTO_tabelnaam_(value1, value2, value3)_VALUES_('alfanumeriek', numeriek, 'alfanumeriek')

De UNDERSCORES zijn VERPLICHTE spaties, anders kan mysql geen veschil maken tussen keywords en bijvoorbeeld een tabelnaam.

killer bel

Legacy Member
jah, dat dacht ik al wel hoor. het zou ook raar zijn dat .

maar euh, ik snap niet goed waar je die mysql_error() moet plaatsen in een lus... gaat dat wel? Het zou wel leuk zijn want dan weet je direct waar het aan ligt...

DarkBone

Legacy Member
Je mysql_error() staat normaal goed, maar dan vind ik het raar dat je toch nog een foutmelding krijgt op die mysql_fetch_row ... want daar geef je ons telkens de foutmelding van.

DarkBone

Legacy Member
PHP:
<?php 
	// Connectie maken met de database
	// Deze gegevens (host, username, password) zet je beter in een configuratiebestand
	// De connectie met de database maak je dan bijvoorbeeld in je header of een ander bestand
	// beide moet je dan includen op iedere pagina waar je het nodig hebt
	mysql_connect('localhost', 'Jorge', 'hotmail'); 
	mysql_select_db('leden'); 
 
	if (empty($_POST))
	{
		echo 'Ga terug <a href="forum.php">terug</a>';
	}
	else
	{ 
		$query .= "INSERT INTO forum (naam, bericht) "; 
		$query .= "VALUES ('"; 
		$query .= $_POST['naam'] . "','"; 
		$query .= $_POST['bericht'] . "');"; 
		$result = mysql_query($query) or die (mysql_error()); 
 
 
		// Tabel tags buiten de lus zetten en gewoon telkens rijen toevoegen in plaats
		// van telkens een nieuwe tabel af te beelden
		echo '<table width="300" border="5">'; 
		while ($rij = mysql_fetch_array($result)){ 
			echo '<tr><td>' . $rij['naam'] . '</td></tr>'; 
			echo '<tr><td>' . $rij['bericht'] . '</td></tr>'; 
		}
		echo '</table>';
	}
?>

Merk op dat je door het gebruik van single quotes je double quotes niet meer hoeft te escapen!

Trouwens, ligt de error niet aan het feit dat er een fout zat in jou logica? Je controleert of er iets gepost is, als dat het geval is dan haal je gegevens op... MAAR als dat niet het geval is, dan gebeurt dat niet maar ga je toch een lijst met gebruikers afbeelden?

Conclusie: die fout doet zich telkens voor als er niets gepost is, want je $result is leeg! Daarom heb ik dan ook de afbeelding binnen de haakjes van de else-tak gezet.

killer bel

Legacy Member
sorry, weer dezelfde fout..

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/psa/home/vhosts/pagedesign.be/httpdocs/xpages/forum2.php on line 33

probeer het eens uit...


en idd je normaal zou ik de eerste 2 regels in een include bestandje moeten zetten, maar aangezien dit een kleine testversie is, vond ik het makkelijker om eventuele fouten te verbeteren... later als ik mijn echt forum maak moet ik dat wel doen... idd

Je maakt ook drastische veranderingen.
zoals echo '...' waar zijn de haakjes??
en
PHP:
mysql_connect('localhost', 'user', 'pass'); 
    mysql_select_db('leden');

ik dacht dat het alleen zo moets en niet anders
PHP:
$db = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('leden', $db);
maar blijkbaar gaat dit ook en is het overzichtelijker :applause:

maar dezelfde fout blijft staan, kan het dan aan de brower liggen of zo? een tijdje geleden zag ik hier een forum met meetme.be of zo en die hadden blijkbaar dezeflde foutmelding en het lag aan de browser IE.
zou dat in dit geval ook kunnen zijn?

DarkBone zei:
Trouwens, ligt de error niet aan het feit dat er een fout zat in jou logica? Je controleert of er iets gepost is, als dat het geval is dan haal je gegevens op... MAAR als dat niet het geval is, dan gebeurt dat niet maar ga je toch een lijst met gebruikers afbeelden?

Conclusie: die fout doet zich telkens voor als er niets gepost is, want je $result is leeg! Daarom heb ik dan ook de afbeelding binnen de haakjes van de else-tak gezet.

dat kan wel maar als er niets gepost is dan ga krijg je toch een link dat je terug moet gaan om wel iets te posten dus mijn $ result is toch altijd gevuld?
alléé of ik snap het niet echt

DarkBone

Legacy Member
Geen idee ivm die browser, maar even op je andere vragen antwoorden:

- waarom geen haakjes bij een echo?
Simpelweg omdat echo eigenlijk geen functie is (maar een language construct), en enkel bij functies gebruikt men haakjes. Waarom men het dan toch toelaat? Sja, om de taal zo toegankelijk mogelijk te houden zeker. Meer erover hier: http://be2.php.net/echo

- Waarom mag je mysql_connect gewoon schrijven zonder die exdtra variabele?
Ook dat staat in de manual uitgelegd. Mysql_connect geeft een link identifier terug, deze vang jij op in een variabele en geeft die mee aan mysql_select_db. Echter, dit staat in de manual bij mysql_select_db: "Als er geen link identifier wordt gegeven, wordt de laatst geopende link aangenomen." En aangezien ik veronderstel dat je maar 1 connectie gaat gebruiken, is het overbodig om dit telkens mee te geven.


Enneeuh, waarom het nu nog steeds niet werkt zie ik niet onmiddelijk. Heb je de laatste versie van mijn code gebruikt, want heb het ondertussen paar keer aangepast :p

DarkBone

Legacy Member
dat kan wel maar als er niets gepost is dan ga krijg je toch een link dat je terug moet gaan om wel iets te posten dus mijn $ result is toch altijd gevuld?
alléé of ik snap het niet echt

Ja, dat zinnetje wordt inderdaad wel afgedrukt, maar daarom stopt het script nog niet met lopen hé. PHP gaat gewoon verder kijken wat hij nog allemaal moet uitvoeren en dan komt hij automatisch bij die afbeelding van de tabel uit, terwijl de gegevens niet werden opgehaald ==> fout, want $result is leeg op dat moment.

Als je het formulier post zou er echter niks verkeerd mogen gaan, maar gebruik es mijn laatste code.

Probeer het zelf eens uit:
http://xpages.pagedesign.be/forum2.php

DarkBone

Legacy Member
Kijk, als ge die error blijft krijgen, kunt ge dan ook es nagaan of ge wel de juiste benamingen gebruik voor uw velden en tabelnamen enzo?

killer bel

Legacy Member
aah bedankt! dat maakt alles veel duidelijker en overzichtelijker :niceone:

nu zou dit kunnen helpen dat php wel stopt met lezen?
exit ();
dus zo

PHP:
if (empty($_POST))
    {
        echo 'Ga terug <a href="forum.php">terug</a>';
        exit();
    }

edit:// en je nieuwere versie werkt evenmin :sad:

killer bel

Legacy Member
ja, mijn tabelnamen enz klopt, want ik kan perfect in myadmin zien wat ik er al ingestoken heb.
zo heb jij denk ik als naam Test en als bericht: hallo ingevoerd.

alleen het schrijven naar een andere pagina loopt volledig mis

DarkBone

Legacy Member
AAAAAAAAAAAAAAAAAAAAAAAAH FUCK FUCK FUCK

Ik besef plots hoe fucking dom wij hier bezig zijn :D

Ge doet een INSERT op uw database hé... wel da's niet hetzelfde als gegevens ophalen hé!

Om gegevens op te halen en daarna af te beelden moet ge een SELECT doen, niet moeilijk da ge altijd fouten krijgt.

Iedereen mag mij nu uitlachen :'( :'( :'( :'(

Valt het op da'k al héél lang niet meer met databases en PHP gewerkt heb :D

DarkBone

Legacy Member
killer bel zei:
aah bedankt! dat maakt alles veel duidelijker en overzichtelijker :niceone:

nu zou dit kunnen helpen dat php wel stopt met lezen?
exit ();
dus zo

PHP:
if (empty($_POST))
{
echo 'Ga terug <a href="forum.php">terug</a>';
exit();
}

edit:// en je nieuwere versie werkt evenmin :sad:
Best geen exit() gebruiken, want echt alle uitvoer wordt dan gestopt, dus ook de uitvoer van eventuele html naar je browser die erna nog zou moeten komen.

Ge moet het gewoon afdwingen via de haakjes zoals in mijn versie. Da's ook het meest logische.

killer bel

Legacy Member
DarkBone zei:
AAAAAAAAAAAAAAAAAAAAAAAAH FUCK FUCK FUCK

Ik besef plots hoe fucking dom wij hier bezig zijn :D

Ge doet een INSERT op uw database hé... wel da's niet hetzelfde als gegevens ophalen hé!

Om gegevens op te halen en daarna af te beelden moet ge een SELECT doen, niet moeilijk da ge altijd fouten krijgt.

Iedereen mag mij nu uitlachen :'( :'( :'( :'(

Valt het op da'k al héél lang niet meer met databases en PHP gewerkt heb :D

GODVERDOMME....

nu begrijp ik domme klote fout miljaar..
OMG
valt het op dat dit één van de eerste keer is dat met php en database werk? :eek:
btw: u moeten ze niet uitlachen maar mij :doh:

killer bel

Legacy Member
PHP:
<?php 
    // Connectie maken met de database
    // Deze gegevens (host, username, password) zet je beter in een configuratiebestand
    // De connectie met de database maak je dan bijvoorbeeld in je header of een ander bestand
    // beide moet je dan includen op iedere pagina waar je het nodig hebt
    mysql_connect('localhost', 'user', 'pass'); 
    mysql_select_db('leden'); 

    if (empty($_POST))
    {
        echo 'Ga terug <a href="forum.php">terug</a>';
    }
    else
    { 
        $query .= "INSERT INTO forum (naam, bericht) "; 
        $query .= "VALUES ('"; 
        $query .= $_POST['naam'] . "','"; 
        $query .= $_POST['bericht'] . "');"; 
        $result = mysql_query($query) or die (mysql_error()); 
	}	
	$query = "SELECT * FROM forum";
	$result = mysql_query($query) or die (mysql_error());
        echo '<table width="300" border="5">'; 
        while ($rij = mysql_fetch_array($result)){ 
            echo '<tr><td>' . $rij['naam'] . '</td></tr>'; 
            echo '<tr><td>' . $rij['bericht'] . '</td></tr>'; 
        }
        echo '</table>';
?>

nu werkt ie
toch bedankt voor die informatie die je me gaf :niceone:
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan