Vreemde mysqli-bug?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

Bekijk vacature »

Front-end Developer

Front-end Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

Medior/senior Python developer

Functie Bedrijven komen bij deze organisatie om technische vraagstukken op te lossen en hierin ook tot oplossingen te komen waar ze zelf misschien niet aan gedacht hadden. Jij gaat vanuit je ervaring dus niet alleen hands-on aan de slag met het ontwikkelen, maar zult ook zeker adviseren en proactief meedenken met de klant. Er zijn meerdere lange en/of korte projecten en het type klanten is heel uiteenlopend. Zo kun je terecht komen in een multidisciplinair scrumteam waarin je als Python developer meewerkt, of juist voor een kleiner (Greenfield) project aan de slag gaan waarin je veel breder bezig bent. Door

Bekijk vacature »

Delphi developer

Functie Als Delphi developer ga jij aan de slag in een team met twee andere ervaren Delphi programmeurs waaronder de Hoofd programmeur. Als team zijn jullie verantwoordelijk voor de doorontwikkeling van jullie bestaande applicatie. Daarnaast zijn jullie verantwoordelijk voor het onderhouden van deze applicatie en het oplossen van eventuele bugs. Eisen - HBO werk en denk niveau; - Minimaal één jaar ervaring met Delphi; - Goede beheersing van de Nederlandse taal in woord en geschrift; - Jij bent zelfstandig, maar kan ook in team verband werken. Aanbod - €3000,-- €4000,- op basis van jouw kennis en ervaring; - 8% vakantiegeld;

Bekijk vacature »

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

Full-stack Developer

As a Full-stack developer at KUBUS, you will develop the (web)applications and services of BIMcollab. You will work on both the front- and back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual developer you can have an impact and really make a difference. Our development team consists of over 40 developers, testers, scrum masters and product owners, divided over

Bekijk vacature »

Front end developer binnen het onderwijs

Functie Het doel van dit team is om te zorgen dat de studenten altijd op de hoogte zijn van relevante informatie en de mogelijkheid hebben om online vragen te stellen. Hiervoor hebben ze een portal ontwikkeld. De app is echt een greenfield project met een eigen inrichting middels cloud. De ontwikkeling wordt gedaan door gebruik te maken van oa. Javascript, React, CSS, Next.js, GraphQL in een Azure Cloud omgeving. Daarnaast gebruiken ze tooling als Figma, storybook, Jest en Github. De complexiteit in deze rol zit hem in het feit dat data uit verschillende bronsystemen komt waarbij er zowel gekoppeld wordt

Bekijk vacature »

C# .NET Developer

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Bennekom gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »
Arjan van Rijs

Arjan van Rijs

11/10/2013 20:07:07
Quote Anchor link
Beste allemaal,

ik ben nieuw hier, dus ik zal me eerst kort voorstellen: Ik ben Arjan. Ik beheer vanaf 2006 een schrijfforum en heb me in eerste instantie verdiept in php omdat ik dat handig vond voor de beheerstaken. Van het een kwam het ander en voor ik het wist stond mijn boekenkast vol met boeken over php, mysql, sql, xhtml, xml, javascript en ajax. Je zou kunnen zeggen dat ik het virus te pakken heb.
In het dagelijks leven verdien ik de kost als chauffeur bij SANDD (postbedrijf) en heb ik een eigen hoveniersbedrijf. Voor diegenen die geïnteresseerd zijn, kijk gerust eens rond op mijn site. Het stelt nog niet zoveel voor, maar ik ben druk bezig een webapplicatie te ontwikkelen waarin ik al mijn huidige kennis kan gebruiken...

en dat brengt me bij de vraag die ik heb.
Ik heb een databasepakket ontworpen en ben dat nu aan het testen, maar heb last van een hele vreemde bug. Ik hoop eigenlijk dat iemand hier weet waar die bug vandaan komt.
Het probleem is het volgende:
bij een geslaagde SELECT-query zou mysqli_query een mysqli_result-object terug moeten geven. Maar ik krijg TRUE terug. Weet iemand hoe dit kan? (dezelfde query geknipt uit het resultaat en geplakt in phpmyadmin geeft keurig het gewenste resultaat en een met opzet foute query geeft FALSE)

Het enige dat ik kan bedenken is dat de functie mysqli_query test of het met een objectinstantie van doen heeft en als dit zo is TRUE teruggeeft (er vanuit gaande dat het een mysqli-objectinstantie is), maar dat zou slordig zijn, toch?

Met viendelijke groet,

Arjan.
 
PHP hulp

PHP hulp

25/04/2024 22:24:26
 
Erwin H

Erwin H

11/10/2013 20:14:07
Quote Anchor link
Waarom is het altijd meteen een bug als iets niet werkt? 99 van de 100 keer ligt het eerder aan de scripter, dan de standaard functies die uit en te na zijn getest namelijk....

Maar ja, zonder ook maar enige code kan niemand iets voor je doen, dus laat eerst eens zien wat je probeert te doen en dan voornamelijk, welke query probeer je te draaien?
 
Arjan van Rijs

Arjan van Rijs

11/10/2013 20:32:47
Quote Anchor link
Beste Erwin,

geloof me als ik zeg dat ik de fout altijd eerst bij mezelf zoek, vervolgens bij mijn ogen en dan nog eens in mijn arm knijp om er zeker van te zijn dat ik niet zelf zit te slapen. Dezelfde routine die deze query afhandelt (bij debuggen altijd zo eenvoudig mogelijk dus SELECT * FROM namen) handelt ook de insert, update en delete querys af, en die gaan prima. Maar goed, de code:

$item = "*";
$tabel = "namen";
$controle = $vraag -> query(1, $tabel, $item);

wordt verwerkt door de methode query die na een hoop bewerkingen uitkomt bij:

if($querystring) {
$resultaatId = mysqli_query($this -> handler, $querystring);
switch($resultaatId){
case TRUE:
$this -> affectedRows = mysqli_affected_rows($this -> handler);
if($gevalideerdeBewerking == "INSERT"){
$this -> insertId = mysqli_insert_id($this -> handler);
}
return TRUE;
break;

case FALSE:
$fout = mysqli_error($this -> handler);
$this -> foutmelding = "Fout bij het uitvoeren van de query.<br />MySqli fout: $fout";
return FALSE;
break;

default:
if(is_object($resultaatId)){
$this -> numRows = mysqli_num_rows($resultaatId);
$resultaat = mysqli_fetch_array($resultaatId, MYSQLI_BOTH);
if($this -> store === TRUE){
parent::$resultHandler++;
parent::$archief[parent::$resultHandler] = $resultaat;
}else{
return $resultaat;
}
}else{
$this -> foutmelding = "Er is een onvoorziene fout opgetreden bij het verwerken van uw query<br />";
return FALSE;
}
}
}else{
return FALSE;
}

ik hoop dat dit meer duidelijkheid biedt.

Met vriendelijke groet,

Arjan.

edit: ik vergeet erbij te zeggen dat ik de querystring die terugkomt eerst echo en dat ik die heb geknipt en geplakt als bedoeld in mij eerste post.
Gewijzigd op 11/10/2013 20:37:15 door Arjan van Rijs
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/10/2013 20:40:28
Quote Anchor link
Welke PHP versie?
 
Arjan van Rijs

Arjan van Rijs

11/10/2013 20:43:18
Quote Anchor link
Net ge-update naar 5.5
 
Erwin H

Erwin H

11/10/2013 23:33:04
Quote Anchor link
Precies....

Als jij dus zegt 'Maar ik krijg TRUE terug.' dan concludeer je dat uit het feit dat de true case in je switch uitgevoerd wordt. Je hebt het NIET getest door even een simpele debug te doen, bijvoorbeeld door eens je $resultaatId te echoen na het uitvoeren van je query. Had je dan namelijk wel gedaan, dan had je gezien dat daar wel een resource in zit ne het dus helemaal niets te maken heeft met 'een bug in mysqli'.

Het probleem hier, is een verkeerd gebruik van het switch statement. Uit de manual (http://www.php.net/manual/en/control-structures.switch.php):
Quote:
The case expression may be any expression that evaluates to a simple type, that is, integer or floating-point numbers and strings. Arrays or objects cannot be used here unless they are dereferenced to a simple type.

Je kan het switch statement dus helemaal niet gebruiken, want als het een resource is (wat het zou moeten zijn), dan kan dat niet correct geevalueerd worden en wordt, standaard, de eerste optie genomen. Daaruit concludeer jij dat je blijkbaar true hebt teruggekregen, maar dat is een foute conclusie. Je query gaat dus prima, maar afhandeling is simpelweg verkeerd.

Het is dus inderdaad helemaal gaan mysqli bug, maar dat wisten we natuurlijk al.
 
Arjan van Rijs

Arjan van Rijs

12/10/2013 00:01:40
Quote Anchor link
Beste Erwin,

helaas, ik heb het resultaat weldegelijk, op verschillende plekken zelfs, ge-echoot, en kreeg 1 terug en in één geval evalueerde $id === TRUE als waar. Maar je hebt een goed punt over de case. Ik zal het morgen eens omschrijven en kijken wat het resultaat is. Bedankt tot zover.
Ik krijg trouwens de indruk dat ik verkeerd geïnterpreteerd wordt; ik probeer niet te zeggen dat ik onfeilbaar ben, maar gewoon dat ik het niet meer weet en dus hulp nodig heb. Ik heb alles geprobeerd wat ik kon bedenken. Ik heb alles zelf aangeleerd en ga ervan uit dat hier mensen zitten die ervoor geleerd hebben...

ps: onderzoek gisteren op het web leerde me dat het probleem vaker voorkomt, alleen was bij die gevallen de oplossing om geneste statements uit elkaar te trekken, en ik gebruik bij voorkeur geen geneste statements.

Vriendelijke groet,

Arjan.

Toevoeging op 12/10/2013 00:09:27:

Oh, trouwens, de opmerking over dat binnen de switch automatisch de eerste statement wordt uitgevoerd is volgens mij niet waar. Als er een resource wordt teruggegeven dan evalueert TRUE niet tot waar en FALSE ook niet, dan moet dus juist de default worden uitgevoerd. En het feit dat zowel de insert als de update en deletequerys wel goed gaan, en dat ook een met opzet foute query tot FALSE evalueerde bewijst dat switch wel met booleaanse waarden kan omgaan (al is het daar misschien niet voor bedoeld).

Nogmaals vriendelijke groet en weltrusten (gaap)
 
Wouter J

Wouter J

12/10/2013 00:24:06
Quote Anchor link
>> Als er een resource wordt teruggegeven dan evalueert TRUE niet tot waar

Resource == true alleen resources !== true. Case werkt met equal to (==) en dus wordt de eerste case aangeroepen.

En nee, je wordt niet verkeerd begrepen. Het is alleen dat je iets een bug noemt, terwijl de kans dat het een bug is 0,001% is. 99 van de 100 keer is het een bug van de developer.

Doe eens een var_dump, dat is de enige methode om de ware waarde te zien.
 
Arjan van Rijs

Arjan van Rijs

12/10/2013 11:32:29
Quote Anchor link
Dank jullie, Erwin en Wouter,

weer iets geleerd. En om verdere Babylonische spraakverwarringen te voorkomen: is iets alleen een bug als het een fout is van de ontwerpers van een taal? In mijn optiek was ik aan het debuggen en impliceert 'bug' slechts een fout, waarbij ik in het midden laat door wie die fout begaan is. Het was dus geenszins mijn bedoeling om op tenen te gaan staan.

Met vriendelijke groet,

Arjan.
 
Erwin H

Erwin H

12/10/2013 13:03:39
Quote Anchor link
Arjan van Rijs op 12/10/2013 00:01:40:
Oh, trouwens, de opmerking over dat binnen de switch automatisch de eerste statement wordt uitgevoerd is volgens mij niet waar. Als er een resource wordt teruggegeven dan evalueert TRUE niet tot waar en FALSE ook niet, dan moet dus juist de default worden uitgevoerd. En het feit dat zowel de insert als de update en deletequerys wel goed gaan, en dat ook een met opzet foute query tot FALSE evalueerde bewijst dat switch wel met booleaanse waarden kan omgaan (al is het daar misschien niet voor bedoeld).

Dan heb je het nog steeds niet begrepen. Boolean waardes zijn niet het probleem in de switch, die worden correct geevalueerd. Het gaat erom als het GEEN boolean waarde is (de resource). Een resource kan door de switch niet geevalueerd worden en daarom wordt PER DEFINITIE de eerste optie genomen. NIET de default. De default wordt alleen gebruikt als geen van de eerdere opties gekozen kon worden, maar dat kan alleen bepaald worden als de expressie in de switch ook daadwerkelijk geevalueerd kan worden, wat hier dus nogmaals niet het geval is.

Voorbeeldje:
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
<?php
$test
= new stdClass();

switch( $test ){
  case
true:
    echo 'het is waar';
    break;
  case
false:
    echo 'het is niet waar';
    break;
  default:

    echo 'het is een object!';
    break;
}

?>

Test en zie wat je krijgt op je scherm.

Toevoeging op 12/10/2013 13:10:37:

Wat betreft de bug. Een bug is inderdaad een fout in de software waardoor iets ander gebeurt dan wat je zou verwachten. In die zin is dit een bug. Omdat je echter als topic titel hebt gekozen "Vreemde mysqli-bug?" doe je vermoeden dat jij denkt dat er iets fout gaat in de mysqli functies. Dat kan, er zitten vast nog bugs in, maar het is onwaarschijnlijk dat dat de oorzaak van het probleem is. Ik loop hier al een tijdje mee inmiddels en ik zie regelmatig mensen een zogenaamde bug melden (of vragen of het wellicht een bug is), maar ik heb nog nooit een topic gezien waar de conclusie ook daadwerkelijk was dat een bug in php de oorzaak was. Het komt altijd neer op een andere fout, vergissing, typo etc. Vandaar mijn eerdere melding over het feit dat ik het opmerkelijk vind dat je je afvroeg of het een bug was. Daarmee ben je niet op mijn tenen gaan staan, in zijn geheel niet.
 
Arjan van Rijs

Arjan van Rijs

12/10/2013 16:57:42
Quote Anchor link
Okee. De pointe van de switch was me al duidelijk na het bericht van Wouter hoor. Alles werkt nu zoals bedoeld (aangepast naar if). Nog genoeg foutjes en over-het-hoofd-gezienigheidjes over.

Vriendelijke groet,

Arjan.
Gewijzigd op 12/10/2013 16:58:24 door Arjan van Rijs
 



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.