Avatar billede janbb Juniormester
20. april 2004 - 03:23 Der er 6 kommentarer og
1 løsning

Søg i tekst i MySQL

Er helt 'grøn' i PHP og kæmper derfor med SQL-syntaks osv.
Er kommet til at ku vise records via:
<? php
$MYSQL_DEFS = array();
$MYSQL_DEFS["host"] = "localhost";
$MYSQL_DEFS["user"] = "username";
$MYSQL_DEFS["password"] = "password";
$MYSQL_DEFS["db"] = "databasename";
mysql_connect($MYSQL_DEFS["host"],$MYSQL_DEFS["user"],$MYSQL_DEFS["password"]);
mysql_select_db($MYSQL_DEFS["db"]);
$sql = mysql_query(" SELECT * FROM tabel ") or die(mysql_error());
if (mysql_num_rows($sql)) { while ($foo = mysql_fetch_assoc($sql)) { echo $foo['feltnavn1'].'
'; echo $foo['feltnavn2'].'
'; echo $foo['feltnavn3'].'
'; echo $foo['feltnavn4'].'
'; } } ?>

Jeg ku så tænke mig at modificere sætningen nedenfor a la:
$sql = mysql_query(" SELECT * FROM tabel where 'feltnavn1' like '%link%") or die(mysql_error());

idet jeg prøver at få vist records hvori der i teksten indgår ordet 'link' og kun dem, men der vises ingen eller jeg får syntaksfejl.´

Har kigget lidt i nogen spm her på E, men jeg er foreløbig kun udrustet til ikke alt for indviklede ting i PHP. :)
Avatar billede limemedia Nybegynder
20. april 2004 - 03:57 #1
du skal ikke have '-er rundt om dit feltnavn i din SQL query - hvis du sætter '-er rundt om, behandles det som en tekst og ikke som et felt i databasen. Dit eksempel bliver således

<?php
    $MYSQL_DEFS = array();
    $MYSQL_DEFS["host"] = "localhost";
    $MYSQL_DEFS["user"] = "username";
    $MYSQL_DEFS["password"] = "password";
    $MYSQL_DEFS["db"] = "databasename";

    mysql_connect($MYSQL_DEFS["host"],$MYSQL_DEFS["user"],$MYSQL_DEFS["password"]);
    mysql_select_db($MYSQL_DEFS["db"]);

    $sql = mysql_query("
        SELECT *
        FROM tabel
        WHERE feltnavn1 LIKE '%link%'
    ") or die(mysql_error());
   
    if (mysql_num_rows($sql)) {
        while ($foo = mysql_fetch_assoc($sql)) {
            echo $foo['feltnavn1'] . $foo['feltnavn2'] . $foo['feltnavn3'] . $foo['feltnavn4'];
        }
    }
?>

Jeg har også rettet dine mange echo statements til én linie samt lavet lidt kode formatering, så det er lettere at læse
Avatar billede janbb Juniormester
20. april 2004 - 13:12 #2
Heldigvis er det somme tider så lidt der skal til :)
Avatar billede janbb Juniormester
20. april 2004 - 13:20 #3
hvad er egtl. rationalet ved tuborgparanteserne ?
Avatar billede limemedia Nybegynder
20. april 2004 - 13:26 #4
[]'erne ? (der er vist ingen tuborg parenteser i eksemplet) - de referer til index felter i arrayet
Avatar billede janbb Juniormester
20. april 2004 - 13:30 #5
{} de paranteser ?. Og hvordan får man et lille mellemrum mellem felterne ?
Er det noget med /r og /n ved ny linie ?.Jo undskyld jeg pumper dig sådan,
jeg er bare lidt ivrig.
Er PHP i familie med Pearl ?.
Avatar billede limemedia Nybegynder
20. april 2004 - 13:33 #6
ahh, dét er jo mig der er blind *g*

{} parenteser angiver blokke, hvor fx efter if/hvis sætningen kan man afgrænse hvilken blok kode der udføres.

PHP anser jeg som en fusion mellem Perl og C++ lignende kode
Avatar billede janbb Juniormester
20. april 2004 - 13:40 #7
Jamen så blev jeg så klog - og while pakkes altså ind i en dobbeltparantes.
Har desværre aldrig 'turdet' gå i gang med C++.
Har dog 'leget' meget med Delphi gennem årene og mange ting ligner hinanden
i de forsk. prog.-sprog.if/while er jo 'kendt', men der er mange små
finurligheder med syntaks og specielle ting.
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