[PHP] Resource id #* - errors

Pagina: 1
Acties:

Onderwerpen


  • Torrentus
  • Registratie: April 2009
  • Laatst online: 14:47
Beste tweakers,

Ik probeer een waarde uit mijn SQL-database te vissen, maar krijg steeds een 'Resource ID #3' of 'Resource ID#4' error.

Met de volgende code kreeg ik "Resource ID #3":
PHP:
1
2
3
4
5
6
7
8
9
10
11
$ID = substr($Rabodata['transactionReference'],1);
$_SESSION['ID'] = $ID;

$_SESSION['Naam'] = mysql_query("SELECT Naam FROM Definitief WHERE ID = '$ID'"); 
$array = mysql_fetch_array($_SESSION['Naam']);
$naam= $array['Naam'];

$_SESSION['Email'] = mysql_query("SELECT Email FROM Definitief WHERE ID ='$ID'"); 
$array = mysql_fetch_array($_SESSION['Email']);
$email = $array['Email'];
echo $_SESSION['Email'],$_SESSION['ID'];

En met deze 'Resource ID #4":
PHP:
1
2
3
4
5
6
7
8
9
10
11
$ID = substr($Rabodata['transactionReference'],1);
$_SESSION['ID'] = $ID;

$_SESSION['Naam'] = mysql_query("SELECT Naam FROM Definitief WHERE ID = '$ID'"); 
$array = mysql_fetch_assoc($_SESSION['Naam']);
$naam= $array['Naam'];

$_SESSION['Email'] = mysql_query("SELECT Email FROM Definitief WHERE ID ='$ID'"); 
$array = mysql_fetch_assoc($_SESSION['Email']);
$email = $array['Email'];
echo $_SESSION['Email'],$_SESSION['ID'];


Uiteraard is er voorafgaand aan beide fragmenten succesvol verbinding met de DataBase gemaakt.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Doe eens een var_dump($array) op regel 6? Krijg je überhaupt iets terug? En als ID numeriek is, waarom staat 't dan tussen single-quotes?

En los daarvan: waarom in hemelsnaam 2 queries terwijl je die velden met 1 enkele select net zo makkelijk allebei kunt ophalen?

[edit]
Wait... whut? Waarom mikker je een mysql_query result in $_SESSION :?

[ Voor 29% gewijzigd door RobIII op 06-09-2012 20:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 08:31
Waarom een resource in $_SESSION opslaan? Je zit nu resources te echo'en.

  • Torrentus
  • Registratie: April 2009
  • Laatst online: 14:47
RobIII schreef op donderdag 06 september 2012 @ 20:14:
Doe eens een var_dump($array) op regel 6? Krijg je überhaupt iets terug? En als ID numeriek is, waarom staat 't dan tussen single-quotes?

En los daarvan: waarom in hemelsnaam 2 queries terwijl je die velden met 1 enkele select net zo makkelijk allebei kunt ophalen?
Ja, ik krijg wel iets terug. array(1) { ["Naam"]=> string(15) "Palts Boerdstra" } array(1) { ["Email"]=> string(25) "palts.boerdstra@gmail.com" }

Haha, oké, reden om de boel in de sessie te plaatsen is voor mij dat mijn sessie verloren raakt nadat ik via de externe pagina van de Rabobank weer terugkom op mijn domein. Voordat de boel naar de Rabo gaat wordt alles in de DB gezet, en als bezoeker terug komt zou komen zou de Sessie dan weer gevuld moeten worden..

Ik heb mijn hoofd al uren zitten breken over waarom die sessie ineens verdwijnt, maar had dit bedacht om het probleem op te lossen.. ;)

Die echo's staan daar enkel voor debugging uiteraard, Ik begon inderdaad met één select, maar om het probleem op te lossen ben ik uiteindelijk hier op uitgekomen..

[ Voor 36% gewijzigd door Torrentus op 06-09-2012 20:19 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Doe eens zoiets:
PHP:
1
2
3
4
5
6
$ID = substr($Rabodata['transactionReference'],1); 

$x = mysql_query("SELECT Naam, Email FROM Definitief WHERE ID = '$ID'");  
$array = mysql_fetch_assoc($x); 

//et voila, u kunt $array nu gebruiken.


mysql_query retourneert een resource (of false...). Die kun je niet in een session opslaan.

[ Voor 32% gewijzigd door RobIII op 06-09-2012 20:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Torrentus
  • Registratie: April 2009
  • Laatst online: 14:47
RobIII schreef op donderdag 06 september 2012 @ 20:19:
Doe eens zoiets:
PHP:
1
2
3
4
5
6
$ID = substr($Rabodata['transactionReference'],1); 

$qry = mysql_query("SELECT Naam, Email FROM Definitief WHERE ID = '$ID'");  
$array = mysql_fetch_assoc($qry); 

//et voila, u kunt $array nu gebruiken.


mysql_query retourneert een resource. Die kun je niet in een session opslaan.
Held :>
Dankjewel, ik ga 't eens goed doorlezen.. :)

Is het normaal gedrag dat je een sessie verliest als je via een externe pagina weer terug komt op je eigen domein?

Verwijderd

Nee, je moet boven aan je pagina session_start(); zetten ;)

  • Torrentus
  • Registratie: April 2009
  • Laatst online: 14:47
Verwijderd schreef op donderdag 06 september 2012 @ 20:26:
Nee, je moet boven aan je pagina session_start(); zetten ;)
Ja, dat begrijp ik, dat heb ik ook zeker gedaan.. :)
Ter informatie: Eerst wordt het hele besteltraject van 7 pagina's op het eigen domein succesvol doorlopen en blijft de sessie in tact. Pas op de laatste pagina wordt de boel in de database gestopt. Dan gaat de order naar de omnikassa v.d. Rabobank, en die stuurt de gebruiker vervolgens weer terug naar een 'landpagina', waar ik de sessie graag weer op zou willen pakken om factuur te verzenden enzo.. En daar loopt het de mist in.

Ik gebruik op alle relevante pagina's session_start();

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1