Nu heb ik een iets moelijker vraagje ivm pg_sql :
Ik heb dit stukje code :

<?php
$a=pg_query("SELECT id, speler, stad, geld FROM speler ORDER BY speler DESC LIMIT ".$max." OFFSET ".$cur."");
$e=(($page*$max)-$max)+1;
while ($b=pg_fetch_array($a)){
	$c=pg_query("SELECT SUM(punt) AS punt FROM item_speler WHERE speler='".$b['speler']."'");
	$d=pg_fetch_object($c);
	if ($b['stad'] == ''){
		$b['stad']='- Geen -';
	}
	if ($d->punt == ''){
		$d->punt='0';
	}
	echo '
	<tr>
<td class="frame3" width="30">'.$e.'</td>
<td class="frame3" width="250">'.$b['stad'].'</td>
<td class="frame3" width="250">'.$b['speler'].'</td>
<td class="frame3" width="110">'.$b['geld'].'</td>
<td class="frame3" width="120">'.$d->punt.'</td>
<td class="frame3" width="30">X</td>
</tr>';
$e++;
}
?>


Nu worden mijn resultaten gerangschikt volgens speler.
Maar nu wil ik dit laten rangschikken volgens de cijfers die bij $d->punt genereert.

Alvast bedankt
Ow ok sorry niet gezien maar nu krijg ik deze fout :

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "." at character 133 in /var/www/vhosts/***.nl/httpdocs/ledenlijst.php on line 31

Dit is mijn lijn 31 :

".$cur);
Echo de query en je hebt het antwoord op je vraag waarom de query fout gaat.

Je zet dus ook NOOOOOOOIT een query rechtstreeks in de functie die hem uitvoert, dan kun je hem niet echoen...
<?php
$query = "SELECT * FROM tabelnaam WHERE id = $1";
$result = pg_query_params($query, $_GET['id']);

echo $query;
?>
where id = '". $1 ."'

al kan je volgens mij ook geen getal als variable nemen, of ben ik nu erg oldschool?
Nee klopt. Maar enkele quotes om een INT-waarde is al overbodig. SQL accepteert INTs zonder quotes, tenminste: als je datatype goed is.
oeps :$

ik doe altijd enkele quotes, voor de zekerheid dan toch. Maar eventjes offtopic, heeft phphulp een sql manual? voor join etc, moet ik nog leren.
wesley schreef op 29.01.2009 15:22
where id = '". $1 ."'

al kan je volgens mij ook geen getal als variable nemen, of ben ik nu erg oldschool?
;)

$1 is hier geen variabele binnen PHP, maar een placeholder binnen de query. De variabele $_GET['id'] wordt vervolgens op een veilige manier op de plek van $1 neergezet. Zo kun je uiteraard ook $2, $3, etc. gebruiken wanneer je meerdere parameters nodig hebt.

Zie de handleiding

Binnen SQL kun je dit ook doen wanneer je met prepared statements gaat werken:

PREPARE new_user(text, text) AS
  INSERT INTO users (naam, achternaam) VALUES($1, $2);

En vervolgens aanroepen vanuit je PHP met:

EXECUTE new_user('Jan', 'Jansen');


De placeholder haal je dus ook niet buiten quotes, dan klopt er echt helemaal niets meer van.

Edit:
Zie ook dit voorbeeld met meerdere parameters.

Reageren