Ik ben bezig met een stored procedure in MySQL (5.0.38-log). In de procedure zit een SELECT ... INTO die 1 of 0 rijen teruggeeft.
Wanneer de SELECT geen rijen teruggeeft genereert de procedure een warning. Dit is een groot probleem omdat de gebruiker NIET mag zien of de query een resultaat oplevert.
Het gaat om de volgende procedure:
Wanneer je dus cram_init aanroept met een gebruikersnaam die in de tabel user voorkomt gaat het allemaal goed. Wanneer de username niet voorkomt krijg je een warning te zien. Dit kan worden gebruikt om te controleren of een gebruikersnaam bestaat en dat is ongewenst.
Hoe kan ik die warning onderdrukken of, beter nog, de query uitvoeren zonder dat er een warning wordt gegenereerd? Ik kan er zelf niets over vinden op google of op GoT.
Wanneer de SELECT geen rijen teruggeeft genereert de procedure een warning. Dit is een groot probleem omdat de gebruiker NIET mag zien of de query een resultaat oplevert.
Het gaat om de volgende procedure:
SQL:
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
| CREATE PROCEDURE cram_init (login TEXT) LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER BEGIN DECLARE cram_challenge TEXT DEFAULT MD5(NOW() * RAND()); DECLARE userid INT; SELECT uid INTO userid FROM user WHERE username = login; IF NOT userid IS NULL THEN INSERT INTO cram ( fk_uid, challenge ) VALUES ( userid, cram_challenge ) ON DUPLICATE KEY UPDATE fk_uid = userid, challenge = cram_challenge; END IF; SELECT challenge; END |
Wanneer je dus cram_init aanroept met een gebruikersnaam die in de tabel user voorkomt gaat het allemaal goed. Wanneer de username niet voorkomt krijg je een warning te zien. Dit kan worden gebruikt om te controleren of een gebruikersnaam bestaat en dat is ongewenst.
Hoe kan ik die warning onderdrukken of, beter nog, de query uitvoeren zonder dat er een warning wordt gegenereerd? Ik kan er zelf niets over vinden op google of op GoT.
Ik ontken het bestaan van IE.