webForumDet fria alternativet

En select som inte fungerar lokalt

PHPur PHP

12 svar · 716 visningar · startad av tanten

tantenMedlem sedan nov. 20051 596 inlägg
#1

När detta körs på servern så fungerar den som den ska, men när jag kör den lokalt så får jag ut "gick inte" när jag kommer hit. Dessförinnan har det hämtats mycket från databasen...

$result = mysql_query("SELECT placering, count( * ) AS antal
FROM resultat r, lopp l
INNER JOIN starta s ON s.loppID = r.loppID AND r.loppID = l.loppID
WHERE s.stallID =$stallID AND typID <5
AND problemID <> 9 
GROUP BY placering") or die("gick inte");
   if (mysql_num_rows($result) == 0)

Om jag raderar or die kommer detta meddelande.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in... och sedan fungerar resten av select på sidan. :q

Vad är det som är fel?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Skriv ut mysql_error() istället för "gick inte", som är helt värdelöst ur felsökningssynpunkt.

mvh

tantenMedlem sedan nov. 20051 596 inlägg
#3

@nders skrev:

Skriv ut mysql_error() istället för "gick inte", som är helt värdelöst ur felsökningssynpunkt.

mvh

och då får jag
Unknown column 'r.loppID' in 'on clause'

@ndersMedlem sedan juni 200032 969 inlägg
#4

Då ser tabellen lokalt inte likadan ut som på servern.

tantenMedlem sedan nov. 20051 596 inlägg
#5

Jag har precis installerat den senaste WAMP och tagit hem sidorna och databasen exakt som de ser ut på servern. Har inte hunnit göra några som hellst ändringar ännu, så jag känner mig som ett enda stort frågetecken.

tantenMedlem sedan nov. 20051 596 inlägg
#6

Har jämfört de båda och allt ser exakt likadant ut förutom att WAMP använder ENGINE=MyISAM och uppe på "one.com" TYPE=MyISAM, men så är det på alla tabeller...och versionerna på MySQL är ju olika.
lokalt:
Serverversion: 5.0.27
PHP-version: 5.2.1
och på one.com:
Serverversion: 4.0.24
PHP-version: 4.4.6

resultat (
  loppID int(11) NOT NULL auto_increment,
  placering int(11) NOT NULL default '0',
  problemID int(2) default '1',
  prisSumma int(11) default '0',
  tid decimal(3,1) default '0.0',
  kommentar text,
  PRIMARY KEY  (loppID),
  KEY problemID (problemID)
) ENGINE=MyISAM  PACK_KEYS=0;
LarsGMedlem sedan dec. 200012 464 inlägg
#7
SELECT placering, count( * ) AS antal
FROM resultat r inner join  lopp l
and r.loppID = l.loppID
INNER JOIN starta s ON s.loppID = r.loppID 
WHERE s.stallID = $stallID 
  AND typID < 5
  AND problemID <> 9
GROUP BY placering

tabellen r låg inte inom joinens scope.

tantenMedlem sedan nov. 20051 596 inlägg
#8

Med din kod LarsG
så blev det:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and r.loppID = l.loppID INNER JOIN starta s ON s.loppID = r.loppID WHERE s.st'

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Ursäkta, jag klistrade och klippte utan att kontrollera resultatet.

SELECT placering, count( * ) AS antal
FROM resultat r inner join  lopp l
ON r.loppID = l.loppID
INNER JOIN starta s ON s.loppID = r.loppID 
WHERE s.stallID = $stallID 
  AND typID < 5
  AND problemID <> 9
GROUP BY placering

Det skall vara ON och inte AND

tantenMedlem sedan nov. 20051 596 inlägg
#10

Nu fungerade det... även när jag skickade upp det till one.com, men så dyker det upp ännu mer fel i koden längre ner som bara finns lokalt och inte "däruppe".

$query = "SELECT sum( prisSumma ) AS pris
  FROM resultat r, starta s
  JOIN lopp l ON r.loppID = l.loppID AND r.loppID = s.loppID AND stallID = $stallID";
   $resultat = mysql_query($query);
   $sum = mysql_fetch_array($resultat);
    if ($sum){
  $nuffra = number_format($sum['pris'], 0, '', ' ');
  echo "<p> Har sprungit in " . $nuffra. "kr, under sin tid hos mig.</p>";
} 
$query = "SELECT l.datum
FROM lopp l, starta s
INNER JOIN resultat r ON l.loppID = s.loppID and s.loppID = r.loppID
WHERE l.typID =6 AND r.problemID =11 AND s.stallID =$stallID";
$result = mysql_query($query);
if ($kvm = mysql_fetch_array($result)) {
   echo "<p>{$rown['namn']} har kvalat in och blivit godkänd för monte' den {$kvm['datum']}</p></div>";
}

Där bägge "= mysql_fetch_array"-raderna blivit fel... :OO :q

@ndersMedlem sedan juni 200032 969 inlägg
#11

Det blir ju lite olika, och konstigt, eftersom one.com har en gammal version av MySQL.

Där bägge "= mysql_fetch_array"-raderna blivit fel...

Vad menar du med "blivit fel"? mysql_error()?

tantenMedlem sedan nov. 20051 596 inlägg
#12

Felet är att det inte skrivs ut något och att jag får varningar på raderna
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...
Ja jag tycker också det är väldigt konstigt... vad händer den dag då one.com uppgraderar sina versioner...
Fast egentligen menade jag kanske inte det för där fungerar det ju.

tantenMedlem sedan nov. 20051 596 inlägg
#13

Jag ändrade de andra selecten så de hamnade inom join också och då fungrade det.
Tack så väldigt mycket...

130 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
128 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)