prepared statements ZONDER WHERE STATEMENT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

Klein team zoekt grote fullstack .NET developer to

Bedrijfsomschrijving Deze werkgever is marktleider in de Benelux en is Europees ook al aardig aan de weg aan het timmeren. Ze voorzien technische winkels van apparatuur om producten een langer leven te geven. Hiermee reduceren ze flink wat CO2 uitstoot en dat is natuurlijk goed voor iedereen! IT speelt een belangrijke rol in de bedrijfsvoering en de applicaties zijn van goed niveau. Als fullstack .NET developer ga jij je bijdrage leveren aan het verder verbeteren van de applicaties en de interne processen. Ze zijn nu met ruim 50 medewerkers in totaal en de afdeling development bestaat uit een 5tal developers.

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 »

Senior Developer Betty Blocks Blauwe Haven Rotterd

Functieomschrijving Voor de Politie zijn wij opzoek naar een Senior Developer Betty Blocks Blauwe Haven Rotterdam. De politieorganisatie heeft jaarlijks te maken met een aanzienlijk aantal politiemedewerkers die vanwege mentale overbelasting niet of beperkt inzetbaar zijn. De Blauwe Haven Rotterdam ondersteunt deze politiemedewerkers in hun herstel en re-integratieproces. De huidige digitale systemen van de Politie bieden onvoldoende ondersteuning in het herstel- en re-integratieproces van politiemedewerkers. Zowel voor de politiemedewerkers als voor de organisatie. Politiemedewerkers worden buitengesloten, waardoor zij eigen regie verliezen. Begeleiders kunnen de voortgang van de medewerkers niet goed monitoren. Management beschikt niet over de mogelijkheid trends te signaleren

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Lasrobotprogrammeur/operator

Heb je interesse in trekkers en beschik je overvlijmscherpse precisie? Solliciteer dan op deze vacature! Als Lasoperator ben je vooral bezig met het maken van nieuwe lasrobotprogramma’s en het optimaliseren van bestaande programma’s, zowel online als offline (incl. het bedienen van de Lasrobots). Daarnaast draag je bij aan een optimaal rendement van de las robots. Verder heb je de volgende werkzaamheden: Het meewerken als operator c.q. Robotlassen niveau 2 (van complexe samenstellingen/halffabricaten), het om- en instellen van de diverse stations van lasmallen (productdragers), het afwerken van laswerk (verwijderen lasspetters en oxiden), het bewaken van de machineplanning (op bewerkingen) incl. de

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Zoek jij een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf? Wij zijn voor deze functie op zoek naar een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! Verder ga jij je bezighouden met: Het verbeteren van functionaliteiten binnen het dataplatform; Meedenken in oplossingsrichtingen; Werken aan de architectuur; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je werken? De organisatie waar je voor gaat werken heeft een onafhankelijk

Bekijk vacature »

Senior .NET Ontwikkelaar

In het kort Als Senior .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag met complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek (denk aan ECT) en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan

Bekijk vacature »

Ervaren PHP Software Developer

Functieomschrijving Voor een toffe opdrachtgever in regio Breda zijn wij op zoek naar een medior PHP Developer met affiniteit met Laravel. Je komt te werken bij een uitdagende opdrachtgever met supergave klanten in een specifieke branche. Als PHP ontwikkelaar ben je samen met een vooruitstrevende team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het vernieuwen van informatiesystemen voor een specifieke branche. Je ondersteunt complexe uitdagingen van klanten. Vervolgens breng je hun wensen in kaart en vertaalt deze door naar maatwerk software. Affiniteit met Laravel is een pré. Om de klanten zo goed mogelijk te ondersteunen en snel in

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »
Daniel van Seggelen

Daniel van Seggelen

17/05/2017 11:45:36
Quote Anchor link
Ik ben met repared statements nieuw en probeer het volgende.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
$link = mysqli_connect("localhost", "user", "", "db"); //Establishing connection to the database , this is alias of new mysqli('')
$query="SELECT * FROM profiles";
$stmt = $link->prepare($query);
//$stmt->bind_param("s",$anti_injection); // binding the parameter to it
$stmt->execute(); //Executing
$result = $stmt->get_result();
while($row = $result->fetch_array(MYSQLI_ASSOC)) // we used MYSQLI_ASSOC flag here you also can use MYSQLI_NUM or MYSQLI_BOTH
{
//Do stuff
}


Ik krijg dan:

Call to a member function execute() on a non-object

Ik wil helemaal geen WHERE clause gebruiken in een query, is dat verplcith met een prepared statement?
Ik zie nergens een voorbeeld waar gewoon een query ZONDER WHERE CLAUSE gebruikt word in een prepared statement zoals:

"SELECT * FROM profiles"

Het lijkt me dan ook overbodig als je geen input waarde controleert.
Ik zie genoeg voorbeelden via google maar geen enkele zonder een WHERE statement.

UPDATE//opgelost met object connectie
Gewijzigd op 17/05/2017 17:46:19 door Daniel van Seggelen
 
PHP hulp

PHP hulp

25/04/2024 14:25:58
 
Ivo P

Ivo P

17/05/2017 13:47:42
Quote Anchor link
Je haalt 2 dingen door elkaar:
Eerst begin je procedureel mysqi_connect() aan te roepen.

Daarna zou je $stmt = mysqli_prepare($link, $query);
kunnen gebruiken.

of je gaat direct voor

$link = new mysqli("localhost", "user", "", "db");

waarna $link wel een object is (en wat een logischer idee is, gezien je de rest van je code weer oo werkt)

Zie ook de voorbeelden op http://php.net/manual/en/mysqli.prepare.php
 
Willem vp

Willem vp

17/05/2017 14:37:10
Quote Anchor link
@Ivo:

Alhoewel het niet aan te bevelen is om procedureel en object-georiënteerd door elkaar te gebruiken (het maakt je code niet per se beter te begrijpen) is het volledig legaal om het te doen; de PHP-documentatie noemt zelfs expliciet dat je de twee stijlen door elkaar kunt gebruiken (wat handig is als je bijvoorbeeld je code aan het omschrijven bent).

@Daniel:

De reden dat je geen codevoorbeelden zonder WHERE tegenkomt, is waarschijnlijk omdat het niet heel nuttig is om in een dergelijke situatie prepared statements te gebruiken. Ik zie overigens niet in waarom het niet zou kunnen. Zal zo eens kijken of ik e.e.a. op mijn eigen systeem kan reproduceren.
 
Thomas van den Heuvel

Thomas van den Heuvel

17/05/2017 15:46:19
Quote Anchor link
Daniel van Seggelen op 17/05/2017 11:45:36:
Call to a member function execute() on a non-object

Volg het kruimelpad terug. Ofwel het preparen gaat mis, ofwel het maken van een verbinding slaagt niet. Je controleert trouwens nergens of beide goed gaan...

Willem vp op 17/05/2017 14:37:10:
omdat het niet heel nuttig is om in een dergelijke situatie prepared statements te gebruiken.

Uniformiteit in het aanspreken van je database lijkt mij een pre.

PS en als je dan toch prepared statements wilt gebruiken dan is PDO wellicht een beter alternatief.
Gewijzigd op 17/05/2017 15:51:03 door Thomas van den Heuvel
 
Willem vp

Willem vp

17/05/2017 15:51:01
Quote Anchor link
> Ofwel het preparen gaat mis, ofwel het maken van een verbinding slaagt niet.

Het maken van de verbinding gaat goed, anders zou je bij de aanroep van prepare() al een foutmelding krijgen.
Dat betekent dat de fout in de query zelf moet zitten; hoogstwaarschijnlijk een tabel die niet bestaat in de geselecteerde database.

De code die in de eerste post staat werkt bij mij in ieder geval probleemloos.

Toevoeging op 17/05/2017 16:10:04:

> Uniformiteit in het aanspreken van je database lijkt mij een pre.

Tot op zekere hoogte. Als ik een schroef moet vastdraaien kijk ik ook eerst of ik een schroevendraaier maat 1, 2 of 3 nodig heb. Ik gebruik niet steevast maat 2, omdat dat nu eenmaal uniform is. Vaak krijg je de schroef er wel mee vast, maar het geeft niet per se het optimale resultaat.

Datzelfde heb ik met prepared statements. De meeste queries kun je inderdaad prepared uitvoeren, maar dat wil niet zeggen dat prepared altijd het beste is. En om een suboptimale oplossing te gebruiken, alleen maar vanwege de uniformiteit vind ik nogal indruisen tegen mijn kwaliteitsbesef. ;-)

Bij queries die je slechts 1x uitvoert, zou je je moeten afvragen of die de overhead van het prepareren waard zijn. Wanneer je prepareert om SQL injection tegen te gaan is die overhead meestal wel te verdedigen. In dit specifieke geval is daar geen sprake van en dan vind ik het zonde om daar het prepared statement-vehikel voor te gebruiken. Ook wanneer je een paar duizend records tegelijkertijd moet inserten is een prepared statement meestal niet aan te raden, want dat is significant trager dan een multi-insert (waarbij je dan wel zelf ervoor moet zorgen dat je geen SQL injection faciliteert).
Gewijzigd op 17/05/2017 16:10:43 door Willem vp
 
Daniel van Seggelen

Daniel van Seggelen

17/05/2017 17:04:48
Quote Anchor link
Bedankt voor de antwoorden.
Ik zie nu iets stoms, dat de queries een typo had in de tabelnaam bij het eerste voorbeeld, wat dus wel werkt, maar naast dat vraag ik mij af of er zonder input wel geadviseerd word om toch prepared statements te gebruiken zonder input?

Nog iets ik gebruik een class met de conn functie:

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
class DBD extends MySQLi
{
    public $connection;
    public $lang = '';
    public function conn()
    {
        if (!$this->connection) {
            $this->connection = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
            mysqli_query($this->conn(),"set names 'utf8'");
            mysqli_query($this->conn(),"SET CHARACTER SET 'utf8'");
        }
        return $this->connection;
    }
}

// de connectie

$DBD = new DBD();

met dit krijg ik dezelfde fout, maar de connectie is toch een object?

$link = $DBD->conn(); //Establishing connection to the database , this is alias of new mysqli('')
$query="SELECT * FROM members";
$stmt = $link->prepare($query);
//$stmt->bind_param("s",$anti_injection); // binding the parameter to it
$stmt->execute(); //Executing


wat doe ik hier fout?
Gewijzigd op 17/05/2017 17:07:30 door Daniel van Seggelen
 
Thomas van den Heuvel

Thomas van den Heuvel

17/05/2017 22:52:00
Quote Anchor link
Willem vp op 17/05/2017 15:51:01:
Ook wanneer je een paar duizend records tegelijkertijd moet inserten is een prepared statement meestal niet aan te raden, want dat is significant trager dan een multi-insert (waarbij je dan wel zelf ervoor moet zorgen dat je geen SQL injection faciliteert).

Wut? Dat lijkt mij bij uitstek een situatie waar je prepared statements gebruikt. Maar dat is meestal niet de norm, en daarom gebruik ik standaard ook geen prepared statements omdat je geen meerwaarde hebt bij SELECT-statements.

Daniel van Seggelen op 17/05/2017 17:04:48:
Nog iets ik gebruik een class met de conn functie:
...
wat doe ik hier fout?


Deze class zit wel heel vreemd in elkaar. Maar wat in ieder geval niet aan te raden is is het instellen van een character encoding via SET NAMES en SET CHARACTER SET (doet dit laatste uberhaupt iets?). Hiervoor is de set_charset() methode.

Wat je je ook af zou moeten vragen is waarom je een wrapper gebruikt waarna je rechtstreeks met het gecreëerde mysqli-object gaat praten, wat is dan de meerwaarde van die class? Ook controleer je in geen van de stappen of de connectie slaagt. Op dit moment heeft heeft die class niet echt veel toegevoegde waarde, het neemt je geen werk uit handen.
 
Ivo P

Ivo P

18/05/2017 09:07:49
Quote Anchor link
je definieert nu een class van het type Mysqli. IN deze class neem je weer een property op die van het type mysqli is.

Vergelijk: een class van het type Auto. In deze auto kun je een aantal zaken vervoeren, bijvoorbeeld een persoon en een krat bier.
Maar nu geef je bij de te vervoeren items ook weer een auto op....

Doe het liever zo:

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
<?php
class DBD extends MySQLi
{
    public $connection;
    public $lang = '';
    public function __construct()
    {

       parent::__construct(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
       $this->query("set names 'utf8'");
       $this->query("SET CHARACTER SET 'utf8'");
    }
}


// de connectie

$DBD = new DBD();

$query="SELECT * FROM members";
$stmt = $DBD->prepare($query);

$stmt->execute(); //Executing
[/code]

$DBD is nu op dezelfde manier te gebruiken als Mysqi, maar los van de automatische connectie opbouw, kun je nog een aantal functies zelf toevoegen, waarmee deze extend pas echt nuttig kan worden.

Maak van DBD niet een doorgeefluik naar Mysqli, maar maak het tot een uitbreiding van de Mysqli-class
 
Ward van der Put
Moderator

Ward van der Put

18/05/2017 09:14:13
Quote Anchor link
Het gaat hier fout:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class DBD extends MySQLi
{
    public $connection;
    public function conn()
    {

        if (!$this->connection) {
            $this->connection = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
        }
    }
}

?>

Je extendt objectgeoriënteerd de klasse MySQLi maar gebruikt vervolgens procedureel mysqli_connect() voor het openen van de verbinding.

MySQLi opent de verbinding bovendien al in de constructor, dus het heeft helemaal geen zin om dat nog een keer te doen met een aparte methode conn().

Wil je dat toch zo doen, dan extendt je MySQLi niet, maar doe je zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class DBD
{
    protected $Connection;

    public function conn()
    {

        $this->Connection = new \MySQLi();
    }
}

?>
Gewijzigd op 18/05/2017 09:14:44 door Ward van der Put
 
Daniel van Seggelen

Daniel van Seggelen

18/05/2017 10:04:45
Quote Anchor link
Bedankt.

Het komt door de persoon en een krat bier, warom ik procedureel en object georienteerd had gemixed :)
Ik heb het aangepast en werkt aan :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
public $connection;
    public $lang = '';
    public function __construct()
    {
       parent::__construct(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
       $this->query("set names 'utf8'");
       $this->query("SET CHARACTER SET 'utf8'");
    }


Toevoeging op 18/05/2017 10:16:20:

Bedankt.

Het komt door de persoon en een krat bier, warom ik procedureel en object georienteerd had gemixed :)
Ik heb het aangepast en werkt naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
public $connection;
    public $lang = '';
    public function __construct()
    {
       parent::__construct(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
       $this->query("set names 'utf8'");
       $this->query("SET CHARACTER SET 'utf8'");
    }


Als ik de tweede optie gebrui; dus
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
protected $Connection;

    public function conn()
    {
        $this->Connection = new \MySQLi();
    }


zonder de extend, welke is dan sneller? De code van een ander script die ik aanpas is nu namelijk al zo gemaakt.
 
Thomas van den Heuvel

Thomas van den Heuvel

18/05/2017 19:35:02
Quote Anchor link
Vraag jezelf af wat voor meerwaarde jouw class heeft.

Mijn vorige reactie is nog steeds van toepassing. Gebruik set_charset() in plaats van bovenstaande constructie.
 



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.