(Onverwachte?) cast to int MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Mark PHP

Mark PHP

29/07/2008 11:14:00
Quote Anchor link
Zojuist bij het selecteren van een record door middel van ID, viel me op dat MySQL de intval van de ingegeven ID neemt.
Ik heb even rondgezocht op het www, maar kan niets anders vinden dan dat dit expected behaviour is van MySQL 5.0 (MySQL tja...).

Wat code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$sql
= 'SELECT id FROM table WHERE id = :id';

// 1
$stmt->bindParam(':id', 1, PDO::PARAM_INT);
//geeft record met ID 1 terug

// 2

$stmt->bindParam(':id', '1abc', PDO::PARAM_INT);
//geeft ook record met ID 1 terug
?>

Ik vind dit nogal vreemd, er zijn natuurlijk wel oplossingen zoals het extenden van PDO en zo de prepare aanpassen, of voor integers sprintf gebruiken, maar dat bevalt me niet zo.

Andere ideeën voor MySQL?
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
PHP hulp

PHP hulp

22/12/2024 02:08:04
 
Jelmer -

Jelmer -

29/07/2008 11:28:00
Quote Anchor link
Leuk leesvoer, kwam ik toevallig gisteren tegen. Er staat onder andere in beschreven hoe PDO intern werkt, en wat daarvan de nadelen zijn.

Daarnaast vraag ik me af wat jij bedoelt met onverwacht gedrag: bindParam(':id', '1abc', PDO::PARAM_INT); Het lijkt mij niet onverwacht dat PDO (en niet de MySQL server) hier het argument naar een int cast.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Mark PHP

Mark PHP

29/07/2008 11:39:00
Quote Anchor link
De vergissing die ik blijkbaar maak is dat de derde parameter van bindParam niet valideert, maar cast. Zie hier: http://www.sitepoint.com/forums/showthread.php?t=508503

Dat vind ik maar onhandig, het lijkt me netjes om de gebruiker een foutmelding of iets dergelijks te tonen als deze een foutief ID invult. Nu moet ik daar dus een extra check overheen gooien.

En die link ga ik nu maar eens lezen, thanks.

By the way, als ik rechtstreeks de query op SQL uitvoer, via MySQL-front, cast deze de string ook naar int.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 



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.