num_rows werkt niet php5

Status
Niet open voor verdere reacties.

looije

Gebruiker
Lid geworden
2 apr 2002
Berichten
203
Beste Helpmijers,

allereerst de code waar het om gaat
PHP:
$sql = "SELECT * FROM `".$tabelnaam."`";
$res = mysql_query($sql);
$aantal_rijen = mysql_num_rows($res);

Ik krijg een error:
mysql_num_rows(): supplied argument is not a valid MySQL result resource

Ik wil hier kijken of de tabel bestaat door te kijken hoeveel rijen er in staan. Gaat dit niet meer in php5? Dacht dat ik het in het verleden wel in php4 zo heb gedaan.
Misschien klopt er iets niet of is er een andere manier om te kijken of er een tabel bestaat met de naam $tabelnaam?

Alvast bedankt voor het meedenken.
 
Grote kans dat er een fout ergens in zit

Probeer dit eens, wellicht krijg je de foutmelding er uit.
PHP:
$sql = "SELECT * FROM `".$tabelnaam."`";
$res = mysql_query($sql);
if(!$res) {
  echo 'Er is een fout opgetreden! MySQL zegt: '. mysql_error();
} else {
  $aantal_rijen = mysql_num_rows($res);
  echo 'Aantal rijen: '. $aantal_rijen;
}
 
ik gok dat je tabel niet bestaad...
hij geeft namelijk heel mooi dat de functie mysql_num_rows geen valide bron heeft kunnen vinden met andere woorden de bron waarin hij moet zoeken is niet goed
 
Klopt dat de tabel niet bestaat.

Op deze manier wilde ik namelijk checken of de tabel bestaat of niet. Dat gaat hem dus niet worden.
Misschien een andere manier om te kijken of een tabel bestaat in een db?
 
[sql]
SHOW TABLES LIKE 'tabelnaam'
[/sql]

Maareh, waarom wil je weten of een tabel bestaat? Hij hoort gewoon te bestaan namelijk.

Wat ben je aan het doen? Waarschijnlijk is er een makkelijkere manier om het op te lossen :)
 
Laatst bewerkt:
ja bij nader inzien ga ik te tabel eerder aanmaken zodat deze idd bestaat. en er dus geen rare fratsen uitgehaald hoeven te worden.
 
Scripts horen geen tabellen aan te maken... die data structuur hoort vast te staan voordat je je script aan het werk zet.

(een enkele uitzondering daargelaten, maar dat zal over het algemeen niet echt het geval zijn, tenzij je heel goed weet wat je aan het doen bent)
 
Nou ja...

Om op je vorige vraag terug te komen met "wat ben je aan het doen"

Ik ben bezig een soort verlanglijstje te maken op internet. Gebruikers kunnen zit registreren en daarna een verlanglijstje maken. Items toevoegen en verwijderen. Hier heb ik wel een apparte tabel voor nodig.
De members tabel laat ik niet maken door een script maar de tabel die de gebruiker gebruikt voor zijn/haar verlanglijstje wel. Ik zie geen andere mogelijkheid.
Natuurlijk bouw ik zoveel mogelijk beveiligingetjes erin om misbruik te kunnen voorkomen.

(maar niet doorvertellen he ;) )
 
Laatst bewerkt:
Je kunt toch gewoon een tabel maken met 'verlanglijstje' en daar voor iedereen bijhouden wat ze willen hebben?

Zet er gewoon een member_id in om aan te geven welke member dat item heeft toevoegd, en laat hem alleen dat gedeelte zien?

Je kunt met een WHERE clause in een query aangeven welke rijen je wilt ophalen, dus stel dat member 2 is ingelogd, dan kun je zijn lijstje ophalen met:

[sql]
SELECT *
FROM verlanglijstje
WHERE member_id = 2
[/sql]

Dan kan hij niet de dingen van anderen zien, maar dan zit wel alles netjes in 1 tabel.
De query kun je gewoon in PHP opbouwen zodat hij het id uit de session pakt, zoals je nu ws ook al doet.
 
ja das mooi, maar naast het item wat op het verlanglijstje staat wil ik ook zaken als "waar te koop", "kleine omschrijving", "foto (althans locatie van foto), enz.
en als een gebruiker er dan bv 10 items op heeft staan.

het wordt dan niet echt overzichtelijk als je het in 1 tabel voor iedereen bij gaat houden
 
In dat geval is het het overzichtelijkst om een aparte tabel te gebruiken voor de producten. Deze bestaat uit een id, "waar te koop", "omschrijving", foto, etc.

In je verlanglijstje-tabel heb je dan een member_id en een product_id (id uit de tabel met producten). Die kan je dan met een subquery of een join opvragen.

[sql]SELECT *
FROM producten
WHERE id IN (SELECT product_id
FROM verlanglijstje
WHERE member_id = 2)[/sql]

of

[sql]SELECT *
FROM producten
INNER JOIN verlanglijstje
ON producten.id = verlanglijstje.product_id
WHERE verlanglijstje.member_id = 2[/sql]

Ik heb het niet getest, maar dit *zou* moeten werken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan