foutje in querry

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dirk Coppens

Dirk Coppens

11/05/2018 16:52:39
Quote Anchor link
Hallo,

Kan iemand mij zeggen wat er fout is aan mijn query AUB.
Ben ten einde raad.


Als ik de query run in een localhost omgeving direkt in phpmyadmin is er niks fout.

Als ik de query aanspreek via een functie (zie hieronder Krijg ik de volgende fout :

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 ')' at line 1
SELECT count(*) FROM gelezen WHERE user_id = 'DPC5900')

Beschrijving functie :

Occurs before SQL query executed
Use this event if you like to modify default SQL query on the page.
Avoid editing strSQL parameter, modify strWhereClause and strOrderBy instead.

Parameters
$strSQL - SQL query being to be executed.
$strWhereClause - WHERE clause applied to the SQL query. Example: "active=1"
$strOrderBy - ORDER BY query applied to the SQL query.Example: "ORDER BY
LastName,FirstName"
$pageObject - an object of Page class representing the current page

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
function BeforeQueryList($strSQL, $strWhereClause, $strOrderBy, $pageObject)
{

$sleutel = $_SESSION["UserID"] ;


//**********  Check if specific record exists  ************
global $conn;
$strSQLExists = "select * from gebruikers where PersUserID='$sleutel'";
$rsExists = db_query($strSQLExists,$conn);
$data=db_fetch_array($rsExists);
if($data)
{

$gb_ID = $data['ID'];

$strSQL = "SELECT
newsmain.ID,
newsmain.InforefDoc,
newsmain.InfoDat,
newsmain.InfoTitel,
newsmain.InfoDatBegin,
newsmain.InfoDatEind,
newsmain.Infolocatie
FROM newsmain
INNER JOIN news_cat ON newsmain.ID = news_cat.ID_news
INNER JOIN gebr_cat ON news_cat.ID_category = gebr_cat.ID_Category and ID_gebruiker ='$gb_ID'
where ID NOT IN (SELECT news_id FROM gelezen WHERE user_id = '$sleutel')"
;


    
}

else
{

// if dont exist do something else

}

}

?>


Dank bij voorbaat
Dirk
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 11/05/2018 17:08:07 door - Ariën -
 
PHP hulp

PHP hulp

24/04/2024 14:19:33
 
Thomas van den Heuvel

Thomas van den Heuvel

11/05/2018 17:03:40
Quote Anchor link
In alle bovenstaande code komt de COUNT() query waarmee iets misgaat niet voor. Weet je zeker dat je op de goede plaats aan het kijken bent? De foutmelding is volgens mij vrij duidelijk? Er staat een sluitingshaak teveel?
 
Dirk Coppens

Dirk Coppens

11/05/2018 17:11:28
Quote Anchor link
Hallo,

Als ik het haakje ')' achter $sleutel weg laat krijg ik de volgende fout :
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 '' at line 12

SELECT newsmain.ID, newsmain.InforefDoc, newsmain.InfoDat, newsmain.InfoTitel, newsmain.InfoDatBegin, newsmain.InfoDatEind, newsmain.Infolocatie FROM newsmain INNER JOIN news_cat ON newsmain.ID = news_cat.ID_news INNER JOIN gebr_cat ON news_cat.ID_category = gebr_cat.ID_Category and ID_gebruiker ='899' where ID NOT IN (SELECT news_id FROM gelezen WHERE user_id = 'DPC5900' limit 0,20
 
- Ariën  -
Beheerder

- Ariën -

11/05/2018 17:38:14
Quote Anchor link
Dat is het niet. Zoek even je juiste query op, want het probleem lijkt elders te liggen, en niet in de code die je geeft.
 
Pipo Clown

Pipo Clown

11/05/2018 19:30:46
Quote Anchor link
Probeer het eens op de volgende manier :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$strSQLExists = "select * from gebruikers where PersUserID='".$sleutel."'";


De variabele staat tussen quotes.
 
Rob Doemaarwat

Rob Doemaarwat

11/05/2018 21:56:18
Quote Anchor link
Dat is weer dat PHPRunner, of niet? Volgens mij is dat weer zo'n framework wat je een snelle start geeft, maar gaandeweg steeds meer tegen je begint te werken.

Wat ik VERMOED:
- PHPRunner gaat met jouw query nog een beetje lopen "knutselen". In je foutmelding van 17:11:28 zie je bijvoorbeeld "limit 0,20" staan. Die heb jij d'r niet achter gezet, maar dat heeft PHPRunner gedaan (VERMOED IK) om te pagineren (steeds 20 regels per pagina).
- Om het aantal pagina's te weten moet ie echter ook het totaal aantal regels bepalen. Dat doet ie door een "count(*)" op dezelfde tabel + where te doen. In jouw query gaat ie dan op zoek naar de FROM ... WHERE ... Als ik die in jouw query opzoek vind ik (incorrect) "FROM gelezen WHERE user_id = 'DPC5900')" (incl die laatste sluithaak, die in de complete query correct is).
- Daar plak ik dan "SELECT count(*)" voor om het aantal regels te weten (denkt PHPRunner), en dan heb je de bewuste foutieve query "SELECT count(*) FROM gelezen WHERE user_id = 'DPC5900')".

Uiteraard is dit een bug in PHPRunner (melden), maar misschien kun je dit voor nu op twee mogelijke manieren omzeilen:

1) Schrijf de "where" in "where ID NOT IN ..." eens met hoofdletters (dus "WHERE ID NOT IN ..."), misschien dat PHPRunner dan de goede FROM ... WHERE pakt voor z'n count(*). Of:

2) Door niet voor de "not in" te gaan, maar de optie "join-null" van Ben uit dit https://www.phphulp.nl/php/forum/topic/items-tonen-niet-niet-gelezen-zijn/102144/ topic.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$strSQL = "SELECT
newsmain.ID,
newsmain.InforefDoc,
newsmain.InfoDat,
newsmain.InfoTitel,
newsmain.InfoDatBegin,
newsmain.InfoDatEind,
newsmain.Infolocatie
FROM newsmain
INNER JOIN news_cat ON newsmain.ID = news_cat.ID_news
INNER JOIN gebr_cat ON news_cat.ID_category = gebr_cat.ID_Category and ID_gebruiker ='$gb_ID'
LEFT JOIN gelezen ON gelezen.news_id = newsmain.ID AND user_id = '$sleutel'
WHERE gelezen.news_id is null
Nu is er maar 1 FROM ... WHERE, en hopelijk snapt PHPRunner het dan wel.
 
Dirk Coppens

Dirk Coppens

11/05/2018 22:14:08
Quote Anchor link
Rob,

Jij hebt het aan het juiste eind, ik heb de "left join" gebruikt en de query wordt nu door phprunner uitgevoerd.
Het probleem is van de baan.
Blijkbaar ken jij de phprunner zeer goed, en ben je een uitstekende programmeur.
Ik ben maar een beginneling van oudere leeftijd.

Ik dank u van harte voor de hulp die de oplossing was.

Dank u
Dirk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.