row uitlezen van 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.
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
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?
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 ;)
error_reporting(E_ALL);
ini_set('display_errors', 1);
Ik zal het er eens in zetten Karl ;)
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']."'";
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 :)
Mag je negeren ;) Ligt totaal aan je database ontwerp.
pardon? leg eens uit ?
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.
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.
@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
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
$sql = "SELCT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];
er in pleur werkt het niet xD