Avatar billede Jakie Juniormester
04. marts 2012 - 23:36 Der er 10 kommentarer og
1 løsning

SELECT ud fra to tabeller samtidig med mysqli prepare statement?

Hej :)

Er ikke vant til mysqli prepare statment, men gør da alt for at lære det. Har søgt lidt efter, hvordan man hiver værdier ud samtidig fra to forskellige tabeler med mysqli prepare statement, men har ikke helt fundet et klar svar.

Er der nogen, som kender en metode?

På forhånd mange tak for hjælpen :)
Avatar billede arne_v Ekspert
04. marts 2012 - 23:52 #1
For at hente ud fra to tabeller bruger du JOIN.

SQL syntax har ikke aendret sig fordi man bruger prepared statement.
Avatar billede Jakie Juniormester
05. marts 2012 - 09:54 #2
men binder man værdierne på samme måde? :)
Avatar billede Jakie Juniormester
05. marts 2012 - 12:43 #3
Altså fx, så her:


if ($stmt = $mysqli->prepare('SELECT topics.topic_id,
                                    topics.topic_subject,
                                    topics.topic_date,
                                    topics.topic_cat,
                                    topics.images,
                                    posts.post_content
                              FROM
                                    topics
                              WHERE
                                    topic_page_cat=?
                        ORDER BY    topic_id
                         
                        DESC LIMIT  1
                                   
                        LEFT JOIN  posts
                       
                        ON          posts.post_topic=topics.?
                       
                        ' )) {


Så får jeg fejlen:

Der opstod en fejl i erklæringen.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 'LEFT JOIN posts ON ' at line 15

?  :)
Avatar billede DeeDawg Nybegynder
05. marts 2012 - 14:01 #4
Rækkefølgen på dine conditions er vigtig, så derfor bør din query se således ud

SELECT topics.topic_id,topics.topic_subject,topics.topic_date,topics.topic_cat,topics.images,posts.post_content FROM topics WHERE topic_page_cat = ? LEFT JOIN posts ON posts.post_topic = topics.? ORDER BY topic_id DESC LIMIT 1

Det burde løse den fejl du får på nuværende tidspunkt, men du vil nok modtage en mere, bagefter. Grundet følgende

LEFT JOIN posts ON posts.post_topic = topics.?

Så vidt jeg ved, kan du ikke benytte ? som du gør her. Kan godt være jeg tager fejl, men ved ikke lige hvordan du har tænkt dig at definere det for bind_param() funktionen. :)
Avatar billede arne_v Ekspert
05. marts 2012 - 14:59 #5
Man skal kun bruge ? for vaerdier ikke til felter.
Avatar billede Jakie Juniormester
05. marts 2012 - 15:20 #6
okay. Men selvom at sql'en er rettet til:

SELECT topics.topic_id,topics.topic_subject,topics.topic_date,topics.topic_cat,topics.images,posts.post_content FROM topics WHERE topic_page_cat = ? LEFT JOIN posts ON posts.post_topic = topics.topic_id ORDER BY topic_id DESC LIMIT 1'

Får jeg stadig..

Der opstod en fejl i erklæringen.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 'LEFT JOIN posts ON ' at line 15
Avatar billede arne_v Ekspert
05. marts 2012 - 15:25 #7
Du kan ikke have en WHERE foer du er faerdig med alle JOIN's
Avatar billede Jakie Juniormester
05. marts 2012 - 16:08 #8
aha..

Mange tak for hjælpen..

I må gerne vedlægge svar:)
Avatar billede arne_v Ekspert
05. marts 2012 - 16:10 #9
svar
Avatar billede DeeDawg Nybegynder
05. marts 2012 - 16:15 #10
Du giver bare arne_v point. Lavede en selv en fejl i #4. ;)
Avatar billede michael_stim Ekspert
05. marts 2012 - 16:37 #11
Og så er der ellers Ole's guide du kan læse:

http://www.eksperten.dk/guide/1480
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