Avatar billede znopie Nybegynder
06. august 2010 - 16:19 Der er 14 kommentarer

Mysql kan ikke finde ud af OR

Hej Eksperter,

Hvorfor kan min mysql ikke finde ud af dette?

        $strPost = $mysqli->real_escape_string($_GET['title']); $numbPost = $mysqli->real_escape_string((int)$_GET['id']);
        $getPost = $mysqli->query( "SELECT * FROM lb_articles WHERE article_url='".$strPost."' OR article_id='".$_GET['id']."' LIMIT 1" ) OR DIE( $mysqli->error );
        $showPost = $getPost->fetch_assoc();

        if ( $_GET['id'] ) { echo "<pre>";print_r($showPost);echo "</pre>";/* header('Location:'.$showPost['article_url'].'.html', true, 301); */ } // REDIRECT URL
        else {
            echo "<h1>".$showPost['article_titel']."</h1><hr>";
            echo "<span>".str_replace(array(',',', '),' &#9134; ',$showPost['article_category'])." - ".$showPost['article_updated']."</span>";
            echo "<p>".nl2br($showPost['article_content'])."</p>";
            echo "<strong>URL: <input size=\"90\" value=\"http://".$_SERVER['SERVER_NAME']."/".$showPost['article_url'].".html\"> — ".$numbPost."</strong>";
           
            // echo "<pre>"; print_r($showPost); echo "</pre>";
        }

Denne mysql linje:  SELECT * FROM lb_articles WHERE article_url='".$strPost."' OR article_id='".$_GET['id']."' LIMIT 1
Avatar billede arne_v Ekspert
07. august 2010 - 01:45 #1
Hvad dækker "ikke finde ud af" mere præcist?
Avatar billede danco Nybegynder
09. august 2010 - 16:43 #2
har du prøvet at udskrive SQL strengen til skærmen ?
i så fald vil vi meget gerne se den herinde
Avatar billede ggxdg Nybegynder
10. august 2010 - 14:28 #3
$getPost = $mysqli->query( "SELECT * FROM lb_articles WHERE article_url='".$strPost."' OR article_id='".$_GET['id']."' LIMIT 1" ) or die( $mysqli->error );

jeg ved ikke om "or die" er case-sensitive, men jeg har i hvert fald aldrig set det upper-case.
Avatar billede ggxdg Nybegynder
10. august 2010 - 14:30 #4
i ovenstående:
LIMIT 1" ) OR DIE( $mysqli->error );
rettet til
LIMIT 1" ) or die( $mysqli->error );
Avatar billede znopie Nybegynder
13. august 2010 - 12:48 #5
Det er OR i queryen altså

article_url='".$strPost."' OR article_id='".$_GET['id']."

Som den ikke kan finde ud af
Avatar billede ggxdg Nybegynder
13. august 2010 - 14:22 #6
article_url='$strPost' OR article_id=$numbPost

hvordan reagerer den på ovenstående?
Jeg har med vilje undladt "'" for "$numbpost".
Avatar billede znopie Nybegynder
14. august 2010 - 17:10 #7
Den kan stadig ikke helte indholdet fra min database med article_id, når jeg henter med article_url får jeg hele artiklen.
Avatar billede ggxdg Nybegynder
15. august 2010 - 14:23 #8
Giver du prøve at smide tabel strukturen ind?
Avatar billede znopie Nybegynder
15. august 2010 - 17:07 #9
CREATE TABLE `lb_articles` (
  `article_id` int(11) NOT NULL auto_increment,
  `article_site_id` int(11) NOT NULL,
  `article_titel` varchar(255) NOT NULL,
  `article_url` varchar(255) NOT NULL default '',
  `article_content` text NOT NULL,
  `article_updated` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `article_category` varchar(255) default NULL,
  `article_active` tinyint(1) NOT NULL default '0',
  `article_description` varchar(160) NOT NULL,
  PRIMARY KEY  (`article_id`)
) ENGINE=MyISAM AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;
Avatar billede ggxdg Nybegynder
15. august 2010 - 22:19 #10
Kommer den med en fejlmeddelelse?
Prøv at smide URL variablerne ind

altså bare
fil.php?id=xxxx&title=yyyyyy


$getPost = $mysqli->query("SELECT * FROM lb_articles WHERE article_url='".$strPost."' OR article_id=".(int)$_GET['id']." LIMIT 1" ) or die( $mysqli->error );

Et forsøg på at lave id til int, og slå denne op som int.

Hvad sker der når du hardcoder er ID?
Avatar billede znopie Nybegynder
17. august 2010 - 15:59 #11
Det er fordi jeg har en hjemmeside hvor jeg skal have lavet url´erne om. De var før i tiden ?id=XX, og bliver ændret til en tekst nu. Så ville gerne den kunne det andet
Avatar billede ggxdg Nybegynder
17. august 2010 - 20:31 #12
Altså dine ID'er bliver lavet om fra tal til tekst? Eller hvordan skal man lige forstå det?
Avatar billede znopie Nybegynder
18. august 2010 - 16:01 #13
Korrekt.

Derfor jeg gerne vil have den til at kunne hente ud fra enten ID eller title

min kode er her;

        $getPost = $mysqli->query( "SELECT * FROM lb_articles WHERE article_url='$strPost' OR article_id='$numbPost' AND article_site_id='".$showSite['site_id']."'" );
        $showPost = $getPost->fetch_assoc();

        if ( $getPost->num_rows <= NULL ) { header('Location:http://'.$_SERVER['SERVER_NAME'].'/'); } // INTET RESULTAT
        elseif ( $_GET['id'] ) { // ÆNDRE TIL TEKST LINK header('Location:http://'.$_SERVER['SERVER_NAME'].'/'.$showPost['article_url'].'.html', true, 301); } // REDIRECT URL
        else {

// RIGTIGT INDHOLD HER...
Avatar billede TommyB Nybegynder
13. september 2010 - 10:15 #14
Nu spørger jeg dumt, men den "limit 1" du har til sidst, er det ikke kun til updates ? jeg mener der skal to parametrer på når det er selects, nemlig "limit 0,1".

Bare lige en kommentar
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
Computerworld tilbyder specialiserede kurser i database-management

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