Toon posts:

[MySql] Maximale grootte query?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen,

ik heb een stored procedure, en een stuk php code die een query uitvoert die mijn stored procedure aanroept.

Stored procedure:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE PROCEDURE `bandselectie`(
IN _merk VARCHAR(255),
IN _voertuig VARCHAR(255),
IN _si VARCHAR(255),
IN _seizoen VARCHAR(255),
IN _order VARCHAR(255)
)
BEGIN
     set @s = CONCAT("SELECT `band`.`Merk`, `band`.`Maatcode`, `band`.`Type`, `band`.`Si`, `band`.`Li`, `band`.`E-keur` FROM `band`");
IF _merk != "" OR _voertuig != "" OR _si != "" OR _seizoen != "" THEN
set @s = CONCAT(@s, " WHERE ", _merk, _voertuig, _si, _seizoen, _order);

END IF;
     PREPARE stmt FROM @s;
     EXECUTE stmt;
end


Query (word dynamisch gegenereerd door php maar bij deze gaat het dus fout):
CALL bandselectie("","","(`band`.`Si` = 'j' OR `band`.`Si` = 'l' OR `band`.`Si` = 'm' OR `band`.`Si` = 'n' OR `band`.`Si` = 'p' OR `band`.`Si` = 'q' OR `band`.`Si` = 'r' OR `band`.`Si` = 's' OR `band`.`Si` = 't' OR `band`.`Si` = 'u' OR `band`.`Si` = 'h' OR `band`.`Si` = 'v' OR `band`.`Si` = 'z' OR `band`.`Si` = 'w' OR `band`.`Si` = 'y')","","")
Nu krijg ik dus een fout bij het uitvoeren van mijn query, waar ik niet wijs uit kan worden :( :
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
Heb ik teveel or statements ofzo? Want alleen als ik heel veel "Si's" in de query stop gaat het fout, met enkele Si's werkt het wel :/

Verwijderd

je hebt de parameters gedefinieerd als aan varchar(255) en je probeerd 314 karakters door te geven !

Verwijderd

Topicstarter
Ow :x Stom dat ik daar niet aan gedacht heb :x Sorry :D

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:31
Waarom doe je dit met een SP, en niet gewoon met een dynamische parametrized SQL query ?
Dit zal nl. veel sneller zijn dan je query te laten genereren door een sp.

Je query zal niet te lang zijn, maar de query die je genereert in je SP, of je SP zelf bevat een syntax query. Misschien een idee om de query die je genereert eens naar het scherm af te drukken....

https://fgheysels.github.io/


Verwijderd

quick-and-dirty oplossing : derde parameters naar een IN statement veranderen ?
"Band.si IN ('j','m','n' .......)"

Verwijderd

Topicstarter
whoami schreef op donderdag 16 maart 2006 @ 12:00:
Waarom doe je dit met een SP, en niet gewoon met een dynamische parametrized SQL query ?
Dit zal nl. veel sneller zijn dan je query te laten genereren door een sp.

Je query zal niet te lang zijn, maar de query die je genereert in je SP, of je SP zelf bevat een syntax query. Misschien een idee om de query die je genereert eens naar het scherm af te drukken....
Parametrized query, vertel :) Daar heb ik nog nooit van gehoord, ik heb dus selectie vakken. En aan de hand van de geselecteerde waardes (kan er dus 1, geen, of meerdere zijn) moet de query worden uitgevoerd. En de voorkeur gaat uit dat de totale query niet in de PHP code staat maar ergens in de database (Dus stored procedure)

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:57

TeeDee

CQB 241

Verwijderd schreef op donderdag 16 maart 2006 @ 12:12:
[...]


Parametrized query, vertel :) Daar heb ik nog nooit van gehoord, ik heb dus selectie vakken. En aan de hand van de geselecteerde waardes (kan er dus 1, geen, of meerdere zijn) moet de query worden uitgevoerd. En de voorkeur gaat uit dat de totale query niet in de PHP code staat maar ergens in de database (Dus stored procedure)
Parametrized queries staan in de Programming FAQ - SQL

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Dit stuk is niet van toepassing op de combinatie PHP/MySQL

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:57

TeeDee

CQB 241

http://www.php.net/manual/en/function.mysqli-prepare.php (nog in ontwikkeling :?)

Afaik is de mysql c api wel geschikt voor parameters. Anders zou je eens met pear db aan de slag kunnen gaan.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Skaah
  • Registratie: Juni 2001
  • Niet online
Komt het niet omdat er puntcomma's instaan? mysql_query() kan toch maar één query per call uitvoeren?

Verwijderd

Topicstarter
Het prepare'n gebeurt ook in de stored procedure door mysql zelf, experimentele functies mag ik geen gebruik van maken ivm richtlijnen hier :)
Pagina: 1