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.

killer bel

Legacy Member
Ik heb een probleempje, ik wil graag als wijze van voorbeeld een werknemer of eender wat toevoegen in mijn database maar ik krijg een error op lijn 19 (
PHP:
$result = mysql_query($query, $db) or die("FOUT");
) ik krijg dus de foutmelding "FOUT" zoals ik zelf geschreven heb.

de html code voor het formulieer dat waarschijnlijk geen problemen levert is
form name="form1" method="post" action="werknemertoevoegen.php">
Code:
<p>id:
    <input type="text" name="id">
  </p>
  <p>Voornaam
    <input type="text" name="Jorge">
  </p>
  <p>Toestel
    <input type="text" name="toestel">
</p>
  <p>
    <input type="submit" name="Submit" value="Submit">
</p>
</form>

het probleem ligt hem hoogstwaarschijnlijk hier en ik ben er bijna zeker van dat het op deze lijn ligt zoals ik vanboven nog eens heb vermeld

PHP:
$result = mysql_query($query, $db) or die("FOUT");

hieronder de volledige code
PHP:
<?php
$db = mysql_connect("host", "user", "pas");
mysql_select_db("werknemers", $db);
$result = mysql_query("SELECT * FROM werknemers", $db);
if (empty($_POST)){
echo("Vul eerst de <a href=\"werknemer.php\">gegevens</a> in");
exit();
} else {
$query .= "INSERT INTO werknemers (id, naam, toestel)";
$query .= "VALUES ('";
$query .= $_POST['id']."','";
$query .= $_POST['voornaam']."','";
$query .= $_POST['toestel']."');";
$result = mysql_query($query, $db) or die("FOUT");
}
?>
</head>

<body>
<?php
$db = mysql_connect("host", "user", "pas") or die("fout geen connectie met db");
mysql_select_db("leden", $db);
$result = mysql_query("SELECT * FROM werknemers", $db);
while ($rij = mysql_fetch_array($result)){
	echo($rij["id"]."|".$rij["voornaam"]."|".$rij["kamer"]."<br>");
}
?>

in het onderste gedeelte zou de de volledige lijst moeten komen van werknemers die er dus niet komt. OF alleen de lijst van werkenmers die ik handmatig in mijn db heb gestopt.



Alvast bedankt

killgore

Legacy Member
vervang "fout" eens door mysql_error():
$result = mysql_query($query, $db) or die(mysql_error());

en je kan ook best checken of die _POST vars wel bestaan ;)

killer bel

Legacy Member
bedankt, killgore. Dan krijg ik dit wat me al al veel wijzer maakt!

No Database Selected

maar ik heb mijn database toch geselecteerd? dat zie je hier
PHP:
mysql_select_db("leden", $db);

wat moet ik dan doen?

killgore

Legacy Member
nog es een or die(mysql_error()) achter die select_db zetten ;)

killer bel

Legacy Member
ik ben de fout gevonden ik had blijkbaar de verkeerde database naam ingevoerd. Maar nu blijkt er precies nog een foutje in te zitten namelijk

Unknown column 'naam' in 'field list'

wat heeft dat te betekenen?

thanks, killer

killgore

Legacy Member
dat het veld naam niet bestaat.

zeker dat et niet name of zo is?

killer bel

Legacy Member
bedankt,
nu werkt hij half... :eek:
als ik de lijst oproep met de id, voornaam en toestelnummer krijg ik alleen de id en de toestelnummer te zien

waarschijnlijk ligt het prob ergens hierin

PHP:
$result = mysql_query("SELECT * FROM werknemers", $db);
while ($rij = mysql_fetch_array($result)){
	echo($rij["id"]."|".$rij["voornaam"]."|".$rij["toestel"]."<br>");

Zero Grav

Legacy Member
Ik krijg ze alledrie te zien zenne, niet te vergeten dat ID een auto_incremented unique waarde is die ge automatisch in moet laten vullen en ni dmv het form :|

killer bel

Legacy Member
ja, ik heb net verbeterd zodat het wel werkt, joepie!!
ik weet hoe je in sqlite een de id automatisch moet laten invullen maar niet met mysql
waarschijnlijk met auto_incremented zoals je zei. Ik snel eventjes een nieuwe tabel maken.

killer bel

Legacy Member
yuw, ik zit met een verry wierd prob, soms het er niet en soms is het er niet

dit is de code:
PHP:
<table border="1" width="80%" align="center">
<tr>
	<th>ID</th>
	<th>Naam</th>
	<th>Toestel</th>
</tr>
<?php
include("inc_connect_mysql.php");
while ($rij = mysql_fetch_array($result)){
	echo("<tr><td>".$rij["id"]."</td>".
	"<td>".$rij["voornaam"]."</td>".
	"<td>".$rij["toestel"]."</td>".
	"<td><a href=\"verwijder_werknemer.php?id=".$rij["id"]."\">verwijder</a>".
	"</td></tr>");
}
?>
</table>


En dit is de foutmelding:

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

Zero Grav

Legacy Member
wel uhm.. waar is $result :)

+ het automatisch laten invullen van een _id in mysql doet ge gewoon door het leeg te laten. Bij het opstellen van uw tabel zet ge unique & auto_increment aan en dan bij het opslaan van een gegeven bv.

INSERT INTO blabla (id,test,test2) VALUES ('', 'test', 'test2');
maar ik doe gewoon
INSERT INTO blabla (test, test2) VALUES ('test', 'test2');

(dit zal btw wel ni werken aangezien ik altijd wel een fout heb met een of ander aanhalingsteken)

maar zoals ge ziet, gewoon leeglaten en die voegt da automatisch in

killer bel

Legacy Member
ja, bedankt zero gravety

maar nu heb ik een ander prob :cry:
en ik moet toegeven dit script komt niet helemaal van mij.
ik zou graag een tabel hebben waar er een link is waar je een id kan verwijderen. de link zou www.blablabla.be/blablabla.php?id=3 of iets in die aard ik denk wel dat je me snapt. Maar hoe kan ik nu zo'n pagina automatisch aanmaken, hij maakt de link wel. vanonder staat hij. Maar die pagina zelf wil er maar niet komen. Weten jullie hoe het moet.

ik weet dat de pagina door $_GET in een querystring naar de browser word verzonder maar hoe je dat echt doe weet ik niet, aangezien ik het script grotendeels uit een boek heb.

als je het niet snapt moet maar eens naar deze link gaan en op verwijder drukken, normaal moet er dan een pagina komen met de gegevens die wil verwijderen en een exept butten, maar dit wil dus niet komen.

de code:
PHP:
<?php
include ("inc_connect_mysql");
if (isset($_POST["bevestiging"]))
	$query= "DELETE FROM WERKNEMERS WHERE id="$_POST["id"];
	$result = mysql_query($query, $db) or die("Fout: ".mysql_error());
	echo("De volgende opdracht is uitgevoerd: $query <br>");
	if($result){
		echo("Record nummer".$_POST["id"]."is verwijderd <br>");
		echo("|<a href \"werknemer.php\">Terug naar het overzicht</a>");
	}
} else {
	$query = "SELECT * FROM werknemers WHERE id=".$_GET["id"];
	$result = mysql_query($query, $db) or die(mysql_error());
?>
</head>

<body>
<?php
while ($rij = mysql_fetch_array($result)){
	echo("Id = ".$rij["id"]."<br>");
	echo("Naam= ".$rij["voornaam"]."<br>");
	echo("Toestel :".$rij["toestel"]."<br><hr>");
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']);?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="<?php echo($_GET["id"]);?>">
<input type="Submit" value="Ja, verwijderen">
<input type="Button" value="Nee, terug">
onclick = "javascript:history.back();">
</form>
<?php
}
?>

EDIT:// en $result zit in de pagina inc_connect_mysql.php :)

Zero Grav

Legacy Member
offtopic: mijn nick is ni afgeleid van gravity :p een beetje #we-care maar kom. ^^

Zero Grav

Legacy Member
$query= "DELETE FROM WERKNEMERS WHERE id="$_POST["id"];
$query = "DELETE FROM WERKNEMERS WHERE id='".$_POST['id']."'";

Dece

Legacy Member
volgens servi moet/mag je de '' rond integer getallen bij je sql queries weglaten om volledig correct te zijn daarenboven mag je variabelen gebruiken indien je double quotes gebruikt... dus correcter is
PHP:
//korte versie
$id = !empty($_POST['id'])?$_POST['id']:'';
$query = "DELETE FROM werknemers WHERE id=$id";

//lange versie
if (!empty($_POST['id']))
{
    $id = $_POST['id'];
    $query = "DELETE FROM werknemers WHERE id = $id";
}
else {
    //eventuele foutmelding
}

killgore

Legacy Member
Dece zei:
volgens servi moet/mag je de '' rond integer getallen bij je sql queries weglaten om volledig correct te zijn daarenboven mag je variabelen gebruiken indien je double quotes gebruikt... dus correcter is
PHP:
//korte versie
$id = !empty($_POST['id'])?$_POST['id']:'';
$query = "DELETE FROM werknemers WHERE id=$id";

//lange versie
if (!empty($_POST['id']))
{
    $id = $_POST['id'];
    $query = "DELETE FROM werknemers WHERE id = $id";
}
else {
    //eventuele foutmelding
}
arrays werken niet deftig tussen ", en je mag (moet eerder :)) de ' weglaten rond numerieke waarden in mysql.

killer bel

Legacy Member
tjeuzes ik ben bezig een forum aan het maken (of toch aan het proberen :eek: )

nu ben ik nog met simpele dingetjes bezig zoals een kader met een naam en bericht door te sturen naar een andere pagina zodat ik dat hopelijk later kan uitbreiden. naar een iets of wat respectabele forum.
maar deze foutmelding begint met op de heupen te werken

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 21

en de code is:

PHP:
<?php
$db = mysql_connect("localhost", "user", "pass");
mysql_select_db("leden", $db);
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, $db) or die (mysql_error());
}
while ($rij = mysql_fetch_array($result)){
echo ("<table width=\"300\" border=\"5\">");
echo ("<tr><td>".$rij['naam']."</td></tr>");
echo ("<tr><td>".$rij['bericht']."</td></tr>");
echo ("</table>");
echo ("<br><br><br>");
}
?>

ik vind hem echt niet, volgens mij is er iets met mijn server want soms is ie er en soms weer niet.
Als dat het prob is ga ik direct bij een andere :angry:
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