Avatar billede killel Nybegynder
02. maj 2012 - 15:46 Der er 7 kommentarer og
1 løsning

Udtræk fra MySQL med php

Hej,

Jeg har nedenstående kode som fejler i:
$result02 = mysql_query('SELECT count(*) FROM data WHERE `8000.01`='a';

fejlkode:
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\test\test2.php on line 14

Jeg er ret sikker på, at den fejler fordi 8000.01 eller a skal være omkranset af et andet tegn, som jeg forgæves har forsøgt at finde.

SELECT count(*) FROM `data` WHERE `8000.01`='a' virker fint i phpmyadmin

<?php
$link = mysql_connect('localhost', '', '');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db('test')) {
    die('Could not select database: ' . mysql_error());
}
$result01 = mysql_query('SELECT count(id) FROM data');
$result02 = mysql_query('SELECT count(*) FROM data WHERE `8000.01`='a';

if (!$result01) {
    die('Could not query:' . mysql_error());
}
echo mysql_result($result01, 0);
echo nl2br(" Kunder\n");
echo mysql_result($result02, 0);
echo nl2br(" 8000.01\n");

mysql_close($link);
?>
Avatar billede wordwrap Nybegynder
02. maj 2012 - 15:50 #1
$result02 = mysql_query('SELECT count(*) FROM data WHERE `8000.01`='a';

mangler da en ) til sidst..
altså: $result02 = mysql_query('SELECT count(*) FROM data WHERE `8000.01`='a');
Avatar billede killel Nybegynder
02. maj 2012 - 15:56 #2
Ja, men det var ikke der fejlen lå ;(
Avatar billede killel Nybegynder
02. maj 2012 - 16:03 #3
og en ' altså:
$result02 = mysql_query('SELECT count(*) FROM data WHERE `8000.01`='a')';

Så kom jeg lidt videre, men får nu fejlen:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\test.php on line 17

Linie 17 er denne:
echo mysql_result($result02, 0);
02. maj 2012 - 16:20 #4
Tre spørgsmål:

1.  Hvilken kode linje er C:\xampp\htdocs\test\test2.php on line 14? 
2.  Den kode du viser, er det den du kører, eller har du kopieret fejlagtigt?  (Koden du viser er fejlagtig.)
3.  Hvis koden du viser er den du kører, hvad sker der så hvis du retter

$result02 = mysql_query('SELECT count(*) FROM data WHERE `8000.01`='a';

til

$result02 = mysql_query("SELECT count(*) FROM data WHERE `8000.01`='a'");

altså for det første afslutte parantesen, for det andet bruge " til at begynde og afslutte queryen, så det ikke konflikter med 'a'.  Som det er nu opfattes

'SELECT count(*) FROM data WHERE `8000.01`=' som en tekststreng (fra ' til ')
og ' efter a opfattes som starten på en ny tekststreng som ikke afsluttes (og som derfor tigger en T_STRING fejl.)
02. maj 2012 - 16:27 #5
Nå vi overlappede, jeg så ikke #3 før jeg sendte #4.  Fejlmeldingen mysql_result() expects parameter 1 to be resource, boolean given tyder på, at du ikke får noget resultat af din query.  Hvis en mysql_query forespørgsel mislykkes, så returneres FALSE.  Det vil sige, at hvor du forventer et resultat, en resource, fra forespørgslen får du i stedet en boolean, nemlig FALSE.

Prøv at rette til som jeg foreslår, altså brug to forskellige slags anførselstegn "" til start og slut og '' til a, og flyt det sidste anførselstegn inden i parantesen.
Avatar billede killel Nybegynder
02. maj 2012 - 19:55 #6
$result02 = mysql_query("SELECT count(*) FROM data WHERE `8000.01`='a'");

løser ikke problemet - fejlbeskeden er den samme
Avatar billede killel Nybegynder
02. maj 2012 - 20:09 #7
Nu virker det, jeg havde fået slået et ekstra tegn ind i selve koden.

Takker for hjælpen - skriver du et svar?
02. maj 2012 - 20:28 #8
Svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester