Toon posts:

[PHP] Noob PHP probleem

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik zit met een beginners probleem in PHP, ik wil een database connectie maken emt een mysql database, dit lukt. Maar zodra ik een querry verstuur en het result wil tonen krijg ik een vreemde foutmelding. Ik ben pas 2 dagen bezig met php, en ben inmiddels wat site's afgegaan amar een duidelijk antwoord ben ik nog niet tegen gekomen.

<?php
$link = mysql_connect("localhost", "username", "ww")
or die ("Could not connect");
print ("Connected successfully");

mysql_select_db("databasenaam");


$result = mysql_query("select * from Telefoonlijst")
or die("Query failed: " . mysql_error());


print $result;
mysql_close($link);


?>

De databse bestaat nu uit 1 table met 1 waarde.

Dit is wat ik terug krijg:
Connected successfullyResource id #3

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 02-08 15:24
gebruik ook even mysql_fetch_array ;)

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Je krijgt een record nummer terug, geloof ik. Met de functies mysql_fetch_array() of mysql_fetch_assoc() kan je daar dan de resultaten uithalen. zie http://nl.php.net

Sole survivor of the Chicxulub asteroid impact.


  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

while($telefoonrecord = mysql_fetch_array($result))
{
print $telefoonrecord['kolomnaam1']."-".$telefoonrecord['kolomnaam2'];
}

Systeem | Strava


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

TS: zet eens [PHP]-tags om je code heen, dan wordt je code op het forum een stuk duidelijker.

Zoals AtleX zegt krijg je dus geen foutmelding terug, maar een resourceID, wat in principe een pointer is naar de informatie die uit de database komt.

Met deze Handle kan je dan vie de fetch commando's de resultaten ophalen en dus die resultaten afdrukken.

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


Verwijderd

Topicstarter
tis duidelijk nu lukt eht me wel, heel erg bedankt!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Makkelijkste vind ik zelf om iets als de volgende code te gebruiken:

PHP:
1
2
3
4
5
echo "<table>";
while(list($rij1,$rij2,$rij3)=mysql_fetch_row(mysql_query("SELECT * FROM table"))) {
echo "<tr><td>$rij1</td><td>$rij2</td><td>$rij3</td></tr>";
}
echo "</table>";

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Waarom die list gebruiken. Je kan beter in je query specifiek de kolom namen selecteren in plaats van select * te doen. Ten eerste is dat sneller en ten tweede kan je dan dat list gebeuren achterwegen laten.

Systeem | Strava


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Brakkie schreef op 11 november 2003 @ 12:14:
Waarom die list gebruiken. Je kan beter in je query specifiek de kolom namen selecteren in plaats van select * te doen. Ten eerste is dat sneller en ten tweede kan je dan dat list gebeuren achterwegen laten.
Het leek mij vrij duidelijk dat de rijnamen refereren naar de rijen die de query teruggeeft. Daarbij is het *altijd* handiger om in je queries alleen om de rijen te vragen die je nodig hebt. De list staat ook helemaal los van de query, en vooral je eerste vind ik dan ook niet getuigen van veel wijsheid.

Verwijderd

Topicstarter
oke en ik ben weer op iets uitgekomen wat ik niet makkelijk opgelost krijg met een paar knowledge bases doorlezen, of zegmaar ik krijg de oplossing niet gevonden.

$result = mysql_query("select T.ACHTERNAAM from CONTACTPERSONEN T, KLANTEN K where T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = $test")
or die("Query failed: " . mysql_error());

while($Testrecord = mysql_fetch_array($result))
{print .$Testrecord['T.ACHTERNAAM'];}

Hij pakt het laatste "T.ACHTERNAAM" gedeelte niet in PHP

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Verwijderd schreef op 13 november 2003 @ 14:47:
oke en ik ben weer op iets uitgekomen wat ik niet makkelijk opgelost krijg met een paar knowledge bases doorlezen, of zegmaar ik krijg de oplossing niet gevonden.

$result = mysql_query("select T.ACHTERNAAM from CONTACTPERSONEN T, KLANTEN K where T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = $test")
or die("Query failed: " . mysql_error());

while($Testrecord = mysql_fetch_array($result))
{print .$Testrecord['T.ACHTERNAAM'];}

Hij pakt het laatste "T.ACHTERNAAM" gedeelte niet in PHP
Wat voor uitvoer/foutmelding krijg je?

TheStreme - Share anything with anyone


Verwijderd

die laatste regel: {print .$Testrecord['T.ACHTERNAAM'];}
daar moet je de punt '.' weglaten voor $Testrecord['T.ACHTERNAAM'] want dat veroorzaakt een parse error.

Verwijderd

Topicstarter
kheb het inmiddels gedeeltelijk opgelost door variabelen te kiezen, maar nu dient zich een nieuw probleem aan. (overigens, als ik sql query rechtstreeks naar de server stuur krijg ik een goed resultaat)

PHP:
1
2
3
4
5
6
7
    $test = "Het Molenven";
    $test2 = "T.ACHTERNAAM";
    $result = mysql_query("SELECT T.ACHTERNAAM FROM CONTACTPERSONEN T, KLANTEN K WHERE T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = $test")
    or die("Query failed: " . mysql_error());
    
    while($Testrecord = mysql_fetch_array($result))
    {print $Testrecord[$test2];}


Connected successfullyQuery failed: You have an error in your SQL syntax near 'Molenven' at line 1

[ Voor 6% gewijzigd door Verwijderd op 13-11-2003 14:58 ]


Verwijderd

Topicstarter
dubbel

[ Voor 99% gewijzigd door Verwijderd op 13-11-2003 14:58 ]


Verwijderd

op deze regel: $test = "'Het Molenven";
daar moet je het apestrof tekentje weglaten, dat enkele quoteje na het eerste aanhalingstekentje.

edit:
je hebt het al verbeterd zag ik...

[ Voor 22% gewijzigd door Verwijderd op 13-11-2003 15:02 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Zie de verschillen:

SQL:
1
2
3
4
5
6
SELECT
   a, b, c
FROM
   table
WHERE
   a = Het Molenven


en

SQL:
1
2
3
4
5
6
SELECT
   a, b, c
FROM
   table
WHERE
   a = 'Het Molenven'


Kan me niet voorstellen dat de eerste het doet, ook al doe je hem rechtstreeks op de server ;) Zie ook de FAQ voor het escapen van strings, trouwens.

Verder stel ik voor dat je je een beetje gaat verdiepen in de tutorials die op PHP.net staan (http://www.php.net) want het is toch echt allemaal manual werk wat je hier vraagt :) Echt lastig kan het niet zijn :)

suc6 :Y)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Je hele query ("SELECT T.ACHTERNAAM FROM CONTACTPERSONEN T, KLANTEN K WHERE T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = $test") lijkt me niet echt correct?

Is "contactpersonen t" 1 tabel en "klanten k" ook?

Probeer eens die bij mekaar te houden door `` (`contactpersonen t` dus)...

Of een guru moet vertellen dat dat niet persee hoeft :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

euh, dicht was dus eigenlijk de bedoeling 8)7 :D

edit:

Om nog even op Osiris' reply in te gaan:

code:
1
2
3
4
SELECT
 ...
FROM
 tabel   t

is shorthand voor

code:
1
2
3
4
SELECT
 ...
FROM
 tabel  AS  t


Je geeft dan een (lange) tabelnaam een alias in de query :)

edit:
zo draait 't toch nog uit op een op meerdere facetten leerzaam topicje :P

weer open dus.

[ Voor 87% gewijzigd door drm op 13-11-2003 15:09 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
het mooiste is nog dat mijn vraag nog door niemand beantwoord is. Het is dus namelijk zo. Dat als ik dit:

SELECT T.ACHTERNAAM FROM CONTACTPERSONEN T, KLANTEN K WHERE T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = "Het Molenven"

Rechtstreeks naar de server stuur ik een goed resultaat krijg.
Maar als ik dit naar de server stuur:

SELECT T.ACHTERNAAM FROM CONTACTPERSONEN T, KLANTEN K WHERE T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = $test1

Waarbij $test1 = "Het Molenven"

ik de hierboven al aangegeven foutmelding krijg, terwijl dit volgens mij exact hetzelfde is.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Natuurlijk is dat niet hetzelfde.

Als ik zeg
PHP:
1
2
3
$str = "woei";
// en ik echo $str:
echo $str;

wat krijg ik dan op mijn scherm?
code:
1
"woei"
of
code:
1
woei
Doe 's een gok? Hoe zou dat dan gaan in strings denk je?

Als ik dit doe:
PHP:
1
2
3
$str = "woei";
// en ik echo die concatenated met een andere string:
echo $str . " spef";

dan is de output natuurlijk
woei spef
en niet
"woei"" spef"
Zelfde geldt natuurlijk voor in de string zelf variabelen opnoemen:

PHP:
1
2
3
$str = "woei";
$other_str = "$str spef";
echo $str;


go figure ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Echter, als je

PHP:
1
2
3
$bla = "hoi";
$detekst = "ja euhm \"$bla\"";
echo $detekst;


uitvoert krijg je wel degelijk

code:
1
ja euhm "hoi"


op je schermpje. Nu moet het toch wel lukken denk ik zo ;) .

TheStreme - Share anything with anyone


Verwijderd

Topicstarter
drm schreef op 13 november 2003 @ 15:36:
Natuurlijk is dat niet hetzelfde.

Als ik zeg
PHP:
1
2
3
$str = "woei";
// en ik echo $str:
echo $str;

wat krijg ik dan op mijn scherm?
code:
1
"woei"
of
code:
1
woei
Doe 's een gok? Hoe zou dat dan gaan in strings denk je?

Als ik dit doe:
PHP:
1
2
3
$str = "woei";
// en ik echo die concatenated met een andere string:
echo $str . " spef";

dan is de output natuurlijk

[...]

en niet

[...]

Zelfde geldt natuurlijk voor in de string zelf variabelen opnoemen:

PHP:
1
2
3
$str = "woei";
$other_str = "$str spef";
echo $str;


go figure ;)
Inderdaad als je zoiets op het scherm toont worden de "" weggehaald en krijg je alleen de tekst, maar ik stuur het nu door naar een SQL server, dan zou het toch niet omgezet moeten worden? Maar als dit wel gebeurd, hoe zorg ik anders dat de quotes blijven staan? Als ik het wil versturen aan de mySQL server.

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Heb je mijn reply wel gelezen? Zo dus:
Vladimir G. schreef op 13 november 2003 @ 15:40:
Echter, als je

PHP:
1
2
3
$bla = "hoi";
$detekst = "ja euhm \"$bla\"";
echo $detekst;


uitvoert krijg je wel degelijk

code:
1
ja euhm "hoi"


op je schermpje. Nu moet het toch wel lukken denk ik zo ;) .

TheStreme - Share anything with anyone


Verwijderd

Topicstarter
Vladimir G. schreef op 13 november 2003 @ 15:44:
Heb je mijn reply wel gelezen? Zo dus:


[...]
Ik zag de reply pas nadat ik gepost had, heel erg bedankt !

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
Verwijderd schreef op 13 november 2003 @ 15:43:
[...]


Inderdaad als je zoiets op het scherm toont worden de "" weggehaald en krijg je alleen de tekst, maar ik stuur het nu door naar een SQL server, dan zou het toch niet omgezet moeten worden? Maar als dit wel gebeurd, hoe zorg ik anders dat de quotes blijven staan? Als ik het wil versturen aan de mySQL server.
www.php.net/addslashes
Kijk daar eens.

of
PHP:
1
mysql_query("INSERT INTO tabelnaam (kolomnaam) VALUES (' \"woei\" ') ");


Als je een " wilt weergeven doe je dus \"
vb.
PHP:
1
echo "\"woei\"";


Output
PHP:
1
"woei"

Verwijderd

Topicstarter
En stel nou dat ik een punt wil weergeven t.bla moet bijv naar de server?

[ Voor 4% gewijzigd door Verwijderd op 13-11-2003 15:54 ]


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Een punt in een string is na mijn weten gewoon een punt en hoeft niet geescaped te worden :)

Verwijderd

Topicstarter
okey in princiepe zou hij het nu dus moeten doen, wat dus uiteraard in werkelijkheid niet het geval blijkt te zijn :9

PHP:
1
2
3
4
5
6
    $test1 = "Het Molenven";
    $result = mysql_query("SELECT T.ACHTERNAAM FROM CONTACTPERSONEN T, KLANTEN K WHERE T.BRINNR = K.BRINNR and K.SCHOOLNAAM_ALPHA = /"$test1/"")
    or die("Query failed: " . mysql_error());
    
    while($Testrecord = mysql_fetch_array($result))
    {print $Testrecord[T.ACHTERNAAM];}


Maar ik krijg weer een eror:
Parse error: parse error, unexpected T_VARIABLE in /usr/local/slash/apache/vhosts/preadict.nl/httpdocs/php/Test3.php on line 9

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Excuse me maar nou breekt echt mijn klomp en alles wat in de buurt van 5 meter van die klomp zit.

Kijk eens goed naar WAT VOOR SLASHES daar staan.

Sorry hoor, maar dit gaat echt nergens meer over. Ga maar gewoon even de manual doorwerken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.