Avatar billede varst Praktikant
28. april 2018 - 19:56 Der er 11 kommentarer

SELECT i php

Hej,
Jeg mangler et andet øje på en SELECT statement jeg roder med via PHP og en mySQL database. Der er forbindelse igennem scriptet, hvilket et testet med flere andre, mere simple statements. Denne her driller:

"SELECT `ID`, `post_title` FROM `wp_posts` WHERE `ID` IN (SELECT `post_id` FROM `wp_postmeta` WHERE `meta_key` = '_EventStartDate' AND `meta_value` > NOW())"

Den virker fint og returnere data igennem phpMyAdmin, men ikke igennem scriptet. Som sagt, så er der forbindelse og scriptet virker med mere simple SELECT statements.

Er der nogen der kan se hvad der driller?

Kh, Kelvin
Avatar billede Slettet bruger
29. april 2018 - 05:41 #1
du har lavet dobbeltkonfekt
der skal kun være 1 select i sætningen
Avatar billede varst Praktikant
29. april 2018 - 06:27 #2
Den virker jo fint inde i phpMyAdmin og er beskrevet bl.a her:
https://www.w3schools.com/sql/sql_in.asp

Kan man ikke bruge en SELECT IN statement?
Avatar billede olsensweb.dk Ekspert
29. april 2018 - 08:25 #3
>Den virker fint og returnere data igennem phpMyAdmin, men ikke igennem scriptet. 
hvordan ser dit script ud ??

hvis din sql retunerer det forvendtede resultat i phpmyadmin så må det være dit script der fejler.

>Kan man ikke bruge en SELECT IN statement?
Jo, du kan godt bruge subqueries / subselect
Avatar billede varst Praktikant
29. april 2018 - 08:41 #4
Jeg har de her to linier i mit script, hvor den der er kommenteret ud, virker og den anden (øverste) ikke virker. Eneste forskel er at jeg ændrer kommentar //...

$rows = db_select("SELECT `ID`, `post_title` FROM `wp_posts` WHERE `ID` IN (SELECT `post_id` FROM `wp_postmeta` WHERE `meta_key` = '_EventStartDate' AND `meta_value` > NOW())");

//$rows = db_select("SELECT `ID` FROM `wp_posts`");
Avatar billede Rune1983 Ekspert
30. april 2018 - 14:54 #5
Er det mig der læser det helt forkert eller kan det ikke løses med følgende?

SELECT `ID`, `post_title`
FROM `wp_posts`
INNER JOIN `wp_postmeta`
ON `post_id` = `ID`
AND `meta_key` = '_EventStartDate'
AND `meta_value` > NOW()
Avatar billede Slater Ekspert
30. april 2018 - 15:19 #6
#1: Sidwave, hvorfor bliver du ved og ved med at udtale dig om ting, du intet ved om?
Subqueries er en helt almindelig ting i SQL.
Avatar billede varst Praktikant
03. maj 2018 - 13:35 #7
Rune1983: Det kan den godt når jeg tester i myPhpAdmin, men jeg får stadig intet op i mit script, så der er en fejl et sted.
Avatar billede Slater Ekspert
03. maj 2018 - 16:40 #8
#7: Så er der jo tydeligvis en fejl et andet sted end i SQL-sætningen.
Når du siger "får intet op", hvad mener du så? Får du en helt tom side? I så fald tyder det jo på en serverfejl med fejlmeddelelser slået fra - og i så fald er du nok nødt til at slå dem til, så du kan få at vide hvad fejlen er.
Avatar billede olsensweb.dk Ekspert
03. maj 2018 - 17:03 #9
#4
>$rows = db_select(
hvordan ser din function db_select ud ??, går ud fra det er en du selv har lavet

jeg kan ikke finde den i wordpress, som jeg antager du anvender pga tabel navne, men imod findes den i  drupal.
det der lyder nærmest i mysql(i) hedder mysql_select_db / mysqli_select_db, selvom jeg tror det er mysql_query / mysqli_query, du skal have fat i

http://php.net/manual/en/function.mysql-select-db.php
http://php.net/manual/en/function.mysql-query.php

http://php.net/manual/en/mysqli.select-db.php
http://php.net/manual/en/mysqli.query.php


drupal
https://drupal.stackexchange.com/questions/75439/db-select-which-selects-nodes-which-have-a-certain-term
https://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_select/7.x



som #8 er inde på, slå error_reporting, og display error til i php.
du kan gøre det direkte i filen ved at ligge dette ind i toppen af filen, ellers skal du rette i php.ini
[code]<?php
define('IN_DEBUG_MODE', true); // Sæt til false i production mode
if (IN_DEBUG_MODE) {
    ini_set("display_startup_errors", "on");
    ini_set("display_errors", "on");
    ini_set("html_errors", "false");
    error_reporting(-1); // -1 viser alle slags fejl beskeder
    ini_set("ignore_repeated_errors", 0);
} else {
// Turn off all error reporting
    error_reporting(0);
}
?>
[/code]
Avatar billede olsensweb.dk Ekspert
03. maj 2018 - 17:07 #10
glamte lige code taget ikke virker her på E, det er jo div, har vist taget skade af at bruge http://www.udvikleren.dk/  :-)

<?php
define('IN_DEBUG_MODE', true); // Sæt til false i production mode
if (IN_DEBUG_MODE) {
ini_set("display_startup_errors", "on");
ini_set("display_errors", "on");
ini_set("html_errors", "false");
error_reporting(-1); // -1 viser alle slags fejl beskeder
ini_set("ignore_repeated_errors", 0);
} else {
// Turn off all error reporting
error_reporting(0);
}
?>
Avatar billede varst Praktikant
03. maj 2018 - 17:30 #11
Tak for jeres svar. Jeg er ved at sætte en lokal webserver op og flytte det hele dertil, så har jeg mere kontrol over tingene, da et eller andet driller. Jeg vender tilbage snart.
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

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