row uitlezen van tabel
Hallo, ik loop tegen een probleempje aan, ik heb de volgende tabel:
CREATE TABLE `uitslagen` (
`id` int(11) NOT NULL auto_increment,
`jaartal` varchar(255) NOT NULL,
`vluchtcode` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`uitslag` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
als ik uitslag.php?jaartal=2010 doe, dan wil ik alle rows met het jaar 2010 hebben,
en als ik uitslag.php?jaartal=2009 doe, dan wil ik alle rows waar als jaartal 2009 staat zichtbaar hebben etc,
Hoe doe ik dit.
CREATE TABLE `uitslagen` (
`id` int(11) NOT NULL auto_increment,
`jaartal` varchar(255) NOT NULL,
`vluchtcode` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`uitslag` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
als ik uitslag.php?jaartal=2010 doe, dan wil ik alle rows met het jaar 2010 hebben,
en als ik uitslag.php?jaartal=2009 doe, dan wil ik alle rows waar als jaartal 2009 staat zichtbaar hebben etc,
Hoe doe ik dit.
Gewijzigd op 25/07/2010 16:15:21 door Gerrit Wiersma
Gerrit Wiersma op 24/07/2010 22:51:13:
$query = "SELECT * FROM uitslagen where jaartal = $_get['jaartal']";
$query = "SELECT * FROM uitslagen where jaartal = $_get['jaartal']";
Probeer eens:
$query = "SELECT * FROM uitslagen WHERE jaartal = '".$_GET['uitslag']."'";
Gewijzigd op 24/07/2010 23:02:49 door Jeroen Spaans
is toch niet zo moeilijk?
Lieve god.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
Tip 1: gebruik de InnoDB engine ipv MyISAM
Tip 2: gebruik mysql_fetch_assoc ipv de _fetch_array
Tip 3: superglobals zijn gedefinieerd in hoofdletters $_get[] <> $_GET[]
Tip 4: pas op voor sql-injectie
Tip 2: gebruik mysql_fetch_assoc ipv de _fetch_array
Tip 3: superglobals zijn gedefinieerd in hoofdletters $_get[] <> $_GET[]
Tip 4: pas op voor sql-injectie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sWhereClause = '';
if (isset($_GET['jaartal']) && ctype_digit($_GET['jaartal']) {
$sWhereClause = "WHERE jaartal = ".mysql_real_escape_string($_GET['jaartal']);
}
$sql = "SELECT *
FROM uitslagen ".$sWhereClause;
if (($result = mysql_query($sql)) == false) {
echo mysql_error().'<br />'.$sql;
}
else {
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>
$sWhereClause = '';
if (isset($_GET['jaartal']) && ctype_digit($_GET['jaartal']) {
$sWhereClause = "WHERE jaartal = ".mysql_real_escape_string($_GET['jaartal']);
}
$sql = "SELECT *
FROM uitslagen ".$sWhereClause;
if (($result = mysql_query($sql)) == false) {
echo mysql_error().'<br />'.$sql;
}
else {
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>
Karl Karl op 24/07/2010 23:05:05:
Lieve god.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
jij doelt om sql injections?
En selecteer dan ook nog eens wat je wilt hebben. Sterretje is een wildcard, dus de db mag net zo goed niks terug geven. Ook is het nog eens duidelijker, voor later. Dat is het mooie aan SQL het documenteert zichzelf, want je kunt zien wat je selecteerd.
Ja, en om ongeldige data.
Stefan Renne op 24/07/2010 23:07:18:
jij doelt om sql injections?
Karl Karl op 24/07/2010 23:05:05:
Lieve god.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
jij doelt om sql injections?
Ja, en om ongeldige data.
Bedankt heren voor de reacties maar ben nog geen streep verder, nog steeds een wit scherm met helemaal niks ;)
Selecteer ook wat je wilt hebben en plaats bovenaan in elk script:
error_reporting(E_ALL);
ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('display_errors', 1);
het is trouwens de bedoeling dat als ik op link: uitslag_uitlezen.php?jaartal=2010 klik, ik dan een scherm met linkjes van uitslagen in 2010 krijg, het uitlezen daarvan snap ik wel.
Ik zal het er eens in zetten Karl ;)
Ik zal het er eens in zetten Karl ;)
Dit kwam er uit :)
Notice: Undefined index: uitslag in /customers/gwmedia.nl/gwmedia.nl/httpd.www/degraaf/uitlezen_jaartal.php on line 48
en dan op regel 48 staat:
$query = "SELECT * FROM uitslagen WHERE jaartal = '".$_GET['uitslag']."'";
Notice: Undefined index: uitslag in /customers/gwmedia.nl/gwmedia.nl/httpd.www/degraaf/uitlezen_jaartal.php on line 48
en dan op regel 48 staat:
$query = "SELECT * FROM uitslagen WHERE jaartal = '".$_GET['uitslag']."'";
Herhaling van wat ik eerder gepost heb maar dan nu met de uitslag parameter
Blijkbaar vergeet je nog steeds te controleren en te validaren
Noppes Homeland op 24/07/2010 23:05:11:
Tip 1: gebruik de InnoDB engine ipv MyISAM
Tip 2: gebruik mysql_fetch_assoc ipv de _fetch_array
Tip 3: superglobals zijn gedefinieerd in hoofdletters $_get[] <> $_GET[]
Tip 4: pas op voor sql-injectie
Tip 2: gebruik mysql_fetch_assoc ipv de _fetch_array
Tip 3: superglobals zijn gedefinieerd in hoofdletters $_get[] <> $_GET[]
Tip 4: pas op voor sql-injectie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sWhereClause = '';
if (isset($_GET['uitslag']) && ctype_digit($_GET['uitslag']) {
$sWhereClause = "WHERE jaartal = ".mysql_real_escape_string($_GET['uitslag']);
}
$sql = "SELECT *
FROM uitslagen ".$sWhereClause;
if (($result = mysql_query($sql)) === false) {
echo mysql_error().'<br />'.$sql;
}
else {
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>
$sWhereClause = '';
if (isset($_GET['uitslag']) && ctype_digit($_GET['uitslag']) {
$sWhereClause = "WHERE jaartal = ".mysql_real_escape_string($_GET['uitslag']);
}
$sql = "SELECT *
FROM uitslagen ".$sWhereClause;
if (($result = mysql_query($sql)) === false) {
echo mysql_error().'<br />'.$sql;
}
else {
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>
Blijkbaar vergeet je nog steeds te controleren en te validaren
Gewijzigd op 25/07/2010 15:22:25 door Noppes Homeland
Thanks, nog maar eens even proberen :)
Tip 1: gebruik de InnoDB engine ipv MyISAM
Mag je negeren ;) Ligt totaal aan je database ontwerp.
Mag je negeren ;) Ligt totaal aan je database ontwerp.
pardon? leg eens uit ?
Negeer Remco maar, die weet blijkbaar niet beter
Alleen als je een fulltext search wilt doen dan zal je de MyISAM engine nodig hebben voor de tabel
MySQL InnoDB engine is de enige waarbij je redelijkerwijs een relationele database kan opzetten
Alleen als je een fulltext search wilt doen dan zal je de MyISAM engine nodig hebben voor de tabel
MySQL InnoDB engine is de enige waarbij je redelijkerwijs een relationele database kan opzetten
Het verschil tussen InnoDB en MyIsam heeft functioneel gezien geen fluit met relationele databases en het redelijkerwijs opzetten daarvan te maken. Je kan met beide (storage!) engines dezelfde relationele databases opzetten en zolang je geen 250 transacties per seconde te verwerken hebt maakt het geen verschil. Enne ik verneem graag onderbouwde tegenargumenten.
heren, allemaal erg bedankt, ben weer tot nieuw inzichten gekomen ;)
mijn oplossing is de volgende :
werkt prima, bedankt allemaal.
mijn oplossing is de volgende :
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$jaartal = "'" . mysql_real_escape_string ( $_GET['jaartal']) . "'";
$query = "SELECT * FROM uitslagen WHERE jaartal = " . $jaartal;
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
?>
$jaartal = "'" . mysql_real_escape_string ( $_GET['jaartal']) . "'";
$query = "SELECT * FROM uitslagen WHERE jaartal = " . $jaartal;
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
?>
werkt prima, bedankt allemaal.
MyIsam ondersteunt geen transacties!
@Gerrit Wiersma
Op deze manier ben je weer terug bij af:
controle en validatie ontbreekt!
je kan dan net zo goed doen:
@Gerrit Wiersma
Op deze manier ben je weer terug bij af:
controle en validatie ontbreekt!
je kan dan net zo goed doen:
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];
?>
$sql = "SELECT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];
?>
Gewijzigd op 25/07/2010 17:01:14 door Noppes Homeland
@Noppes: "MyIsam ondersteunt geen transacties" Wat is een transactie ?
Update table set veld = NOW() is een elementaire transactie. We kunnen nu wel gaan kiften over de definitie van een transactie maar nogmaals het is niet zinvol om tegen iemand te roepen: Tip 1: gebruik de InnoDB engine ipv MyISAM
The only advantage InnoDB has over MyISAM is that it supports row locking, while MyISAM only supports table locking. Therefore, if lots of reads and writes are constantly being done to a very large table, it eliminates the constant database errors that using a MyISAM table would cause from the overload. InnoDB would therefore be a tad more reliable when you don't mind taking a small performance hit in exchange for not suffering from table locking issues. To achieve a very high lock speed, MySQL uses table locking (instead of page, row, or column locking) for all storage engines except InnoDB, BDB, and NDBCLUSTER.
Update table set veld = NOW() is een elementaire transactie. We kunnen nu wel gaan kiften over de definitie van een transactie maar nogmaals het is niet zinvol om tegen iemand te roepen: Tip 1: gebruik de InnoDB engine ipv MyISAM
The only advantage InnoDB has over MyISAM is that it supports row locking, while MyISAM only supports table locking. Therefore, if lots of reads and writes are constantly being done to a very large table, it eliminates the constant database errors that using a MyISAM table would cause from the overload. InnoDB would therefore be a tad more reliable when you don't mind taking a small performance hit in exchange for not suffering from table locking issues. To achieve a very high lock speed, MySQL uses table locking (instead of page, row, or column locking) for all storage engines except InnoDB, BDB, and NDBCLUSTER.
Gewijzigd op 25/07/2010 16:54:51 door Aad B
als ik die
$sql = "SELCT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];
er in pleur werkt het niet xD
$sql = "SELCT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];
er in pleur werkt het niet xD




