[SQL] Werkt niet in eigen PHP script,wel in phpMyAdmin

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Ik ben bezig met het koppelen van informatie uit verschillende tabellen, zo heb ik 6 tabellen die informatie bevatten, een van die tabellen heeft de koppelingen.

In de hoofd tabel komt er soms de waarde -1 of -2 voor, in de andere tabellen heb ik ook de records met id -1 en -2 dus het zou moeten werken...

Maar als ik het uitvoer pakt de statement alleen alles met >=0 bij de koppelings velden.

Als ik het zelfde statement in phpMyAdmin doe, dan werkt het wel zonder enig probleem....

SQL Statement in kwestie:
select f.name as firstname, s.name as secondname, c.name as commonname, t.name as club, n1.name as nation1, n2.name as nation2 from cm3_players p, cm3_firstnames f, cm3_secondnames s, cm3_commonnames c, cm3_clubs t, cm3_nations n1, cm3_nations n2 where s.id = p.secondname and f.id = p.firstname and c.id = p.commonname and t.id = p.club and n1.id = p.nation and n2.id = p.secondnation and s.name like 'V%' order by s.name

Hoe kan dit?

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

die query kan ik niet lezen hoor.

En hoe kom je erbij "hij doet het niet" ?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 06-09 02:30

dusty

Celebrate Life!

Zet eerst eens je query leesbaar neer met [code] tags erom heen en een leesbare opmaak ie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
select
  veld,
  veld
from
  tabel1,
  tabel2,
where
  blaat
and
  blaat2
order by
  blaat

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 11-09 10:47
En het light niet aan de manier waarop jij de rows op het scherm tovert.?

Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
select 
  f.name as firstname, 
  s.name as secondname, 
  c.name as commonname, 
  t.name as club, 
  n1.name as nation1, 
  n2.name as nation2 
from 
  cm3_players p, 
  cm3_firstnames f, 
  cm3_secondnames s, 
  cm3_commonnames c, 
  cm3_clubs t, 
  cm3_nations n1, 
  cm3_nations n2 
where 
  s.id = p.secondname and 
  f.id = p.firstname and 
  c.id = p.commonname and 
  t.id = p.club and 
  n1.id = p.nation and 
  n2.id = p.secondnation and 
  s.name like 'V%' 
order by 
  s.name


Hoe ik er bij kom dat deze het niet doet: Nou als ik naar me uitvoer kijk van me .php laat hij alleen zien waar p.nation en p.secondnation >= 0 en als ik in phpMyAdmin kijk krijg ik alles ongeacht wat p.nation en p.secondnation als waarde hebben.

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Sybr_E-N schreef op 19 januari 2003 @ 21:54:
En het light niet aan de manier waarop jij de rows op het scherm tovert.?
Nee want ik krijg gewoon minder records terug....

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 08:49
Parcye schreef op 19 januari 2003 @ 21:55:
...
Nou als ik naar me uitvoer kijk van me .php laat hij alleen zien waar p.nation en p.secondnation >= 0 en als ik in phpMyAdmin kijk krijg ik alles ongeacht wat p.nation en p.secondnation als waarde hebben.
Ligt het dan niet aan je PHP code?
Die statement zou nml. in phpMyAdmin echt hetzelfde moeten retourneren als in jouw statement in je .php pagina. (Tenzij er een typefout in je php zit of course ;) )

En trouwens, dit is toch MySQL en niet SQL of zie ik het nou verkeerd? :?

Mustang Mach-E SR RWD | MINI Countryman Cooper S


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Ja het is MySQL, sorry foutje

De sql statements zijn 100% gelijk! Gewoon copy paste....

Zelfs in een script met alleen DB connectie en output van aantal gevonden records gaat het mis.... maar het blijft werken in phpMyAdmin

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Doe es de code die je eromheen hebt hier plakken dan :?

Ik vind het iig erg vreemd, want het kan dus niet aan mysql, php zelf en de verbinding liggen...

Acties:
  • 0 Henk 'm!

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 09-09 09:55
from
cm3_players p,
cm3_firstnames f,
cm3_secondnames s,
cm3_commonnames c,
cm3_clubs t,
cm3_nations n1,
cm3_nations n2
Waarom definieer je deze tabel 2 keer? 8)7

Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");    
header("Cache-Control: no-cache, must-revalidate");    
header("Pragma: no-cache");
set_time_limit(0);
mysql_connect("localhost", "", "");
mysql_select_db("");

if (!isset($letter)) $letter = "A";
echo "<br><b>Players by secondname [letter $letter]</b><br>";
echo "<center>[ ";
for ($let = "A"; $let < "Z"; $let++)
    echo "<a href=\"index.php?letter=$let\">$let</a>&nbsp;||&nbsp;";
$let = "Z";
echo "<a href=\"index.php?letter=$let\">$let</a>&nbsp;]</center><br><br>";
?>
<html>
<body>
      <table width="95%" border="0" cellspacing="0" cellpadding="0" align="center">
        <tr height="1" style="background: #000060"><td colspan="4">[img]"imges/pixel.jpg"[/img]</td></tr>
        <tr style="background: #8080B0"><td width="25%"><b>Name</b></td><td width="25%"><b>Club</b></td><td width="25%"><b>Nationality</b></td><td width="25%"><b>Other information:</b></td></tr>
        <tr height="1" style="background: #000060"><td colspan="4">[img]"imges/pixel.jpg"[/img]</td></tr>
<?
$sql = "select f.name as firstname, s.name as secondname, c.name as commonname, t.name as club, n1.name as nation1, n2.name as nation2 from cm3_players p, cm3_firstnames f, cm3_secondnames s, cm3_commonnames c, cm3_clubs t, cm3_nations n1, cm3_nations n2 where s.id = p.secondname and f.id = p.firstname and c.id = p.commonname and t.id = p.club and n1.id = p.nation and n2.id = p.secondnation and s.name like '".$letter."%' order by s.name";
$res = mysql_query($sql);
while ($row=mysql_fetch_array($res))
{
    if ($row[commonname] <> "") $name = $row[commonname]; else $name = $row[firstname]." ".$row[secondname];
    if ($row[nation2] <> "") $nation = $row[nation1].", ".$row[nation2]; else $nation = $row[nation1];
    echo "<tr><td width=\"25%\">".$name."</td><td width=\"25%\">".$row[club]."</td><td width=\"25%\">".$nation."</td><td width=\"25%\"></td></tr>";
}
?>
      </table>
</body>
</html>


Dat is de code, maar ik zie echt niet wat daar fout aan is...

[ Voor 28% gewijzigd door Parcye op 19-01-2003 22:44 ]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
KillR-B schreef op 19 January 2003 @ 22:43:
from
cm3_players p,
cm3_firstnames f,
cm3_secondnames s,
cm3_commonnames c,
cm3_clubs t,
cm3_nations n1,
cm3_nations n2
Waarom definieer je deze tabel 2 keer? 8)7
n1.id = p.nation and
n2.id = p.secondnation and

Daarom dus....

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 09-09 09:55
$letter moet $let zijn bij die query denk ik

Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Nee dat is het niet, en ook als ik '".$letter."%' vervang met 'V%' doet hij het niet

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 11-08 18:10

Goodielover

Only The Best is Good Enough.

Volgens mij doet een van de twee het gewwon verkeerd.
Heb je voor het joinen naar nations niet een outer join nodig.
Ik kreeg het gevoel uit je je uitstpraak dat de nation_id ook 0 of NULL kon zijn.
Als je dan toch alles wilt hebben, moet je outer joinen. DIt verklaart natuurlijk niet het veschil!

Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Nation kan zijn -2 of 0..n
Secondnation kan zijn -2 of 0..n

cm3_nations bevat een record met id -2 en met de id's 0..n

het probleem in me php script is dat hij met records met id -2 niet om weet te gaan.

club kan zijn -1 en 0..n

cm3_clubs bevat records met id -1 en 0..n

Ook hier laat hij alleen dingen zien met id 0..n

het probleem in me php script is dat hij met records met id -1 niet om weet te gaan.

Komt dit door de spatities in me statement?
dus t.id = p.club
zou t.id=p.club beter werken dan?

edit:
Nee dat maakt geen enkel verschil

[ Voor 6% gewijzigd door Parcye op 20-01-2003 15:27 ]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

Verwijderd

Je gebruik nergens enkele quotes bij array's

gebruik allereerst $row['commonname'] ipv $row[commonname];

gebruik enkele quotes.

Doe dit bij alle geindexeerde array's


http://www.yapf.net/faq.php?cmd=viewitem&itemid=622 Uitleg array's

[ Voor 101% gewijzigd door Verwijderd op 20-01-2003 15:35 ]


Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Dat veranderd niet aan het probleem...

Maar waarom $row['naam'] ipv $row[naam]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 11-08 18:10

Goodielover

Only The Best is Good Enough.

Zijn je ID velden wel numeriek of alfanumeriek. Dat zou eigenlijk geen verschil mogen maken, maar misshien dat hij probeert te typecasten

Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
de id velden zijn allemaal int(6)....

Maar waarom werkt het WEL in phpMyAdmin en NIET in mijn eigen script...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
select 
  f.name as firstname, 
  s.name as secondname, 
  c.name as commonname, 
  t.name as club, 
  n1.name as nation1, 
  n2.name as nation2 
from 
  cm3_players p, 
  cm3_firstnames f, 
  cm3_secondnames s, 
  cm3_commonnames c, 
  cm3_clubs t, 
  cm3_nations n1, 
  cm3_nations n2 
where 
  s.id = p.secondname and 
  f.id = p.firstname and 
  c.id = p.commonname and 
  t.id = p.club and 
  n1.id = p.nation and 
  n2.id = p.secondnation and 
  s.name like 'Z%' 
order by 
  s.name


phpMyAdmin : 2064 records
mijn script : 79 records

en dan doe ik alleen
PHP:
1
2
3
$sql = ".......";
$res = mysql_query($res);
echo mysql_num_rows($res);

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 11-08 18:10

Goodielover

Only The Best is Good Enough.

Je bent niet dom, maar toch vraag ik het maar: Weet je zeker dat je naar dezefde DB connect?

Acties:
  • 0 Henk 'm!

Verwijderd

ik zat te kijken of hij misschien reserved words gebruikte in zijn query maar dat is ook niet volgens mij... (die zouden dan door phpmyadmin automagisch gebacktickt kunnen worden) Maar dan nog zou de query het helemaal niet moeten doen in php... dus dat is ook een beetje een loze gedacht...

Acties:
  • 0 Henk 'm!

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Nou na het DB tip heb ik is even aan de server admin gevraagd.. en wat blijkt... de phpMyAdmin wijst nog naar de oude server met zn ip waardoor de aanpassingne van mij op de oude server waren en niet op de nieuwe.... LEUK!! dus bedankt, probleem is dus gevonden...

Nu even een emmer cement zoeken kan hij haar in gaan staan terwijl iedereen even met de honkbal knuppel langs komt..... DAMN!!

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 11-08 18:10

Goodielover

Only The Best is Good Enough.

Graag gedaan. Kon ook haast niet anders.
Pagina: 1