AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlerhafte Abfrage

Offene Frage von "Luckie"
Ein Thema von Luckie · begonnen am 6. Jul 2011 · letzter Beitrag vom 6. Jul 2011
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:14
Zitat:
Das (?) wird dann durch den zweiten Parameter von bind_param ersetzt?
Dem Parameter wird der Wert zugewiesen. (In diesem Fall hat dieser keinen Namen)
Das verstehe ich jetzt nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:22
Die Parameter sind eine Features des DBMS.

Beispiel Insert von mehreren Datensätzen

1. ohne Parameter:

SQL-Code:
insert into person ( name, vorname) values ( 'Puff', 'Michael');
insert into person ( name, vorname) Values ( 'Kinzler', 'Markus');
Es wird zuerst die 1. Abfrage an das DBMS gesendet, diese wird geparst und eine Abfargeplan gebildet.
Entsprechend für jeden weiteren Insert.

2. mit Parameter:

insert into person ( name, vorname) values ( :name, :vorname); Es wird die Abfrage mit Platzhalter und nicht mit konkreten Werten an das DBMS gesendet. Dieses parst sie, bildet einen Plan und erzeugt die Parameter.

Beim eigentlichen Insert werden dann nur die Werte für die Parameter an das DBMS gesendet und die Abfrage mit diesen werten ausgeführt.
Das ist deutlich schneller, da die Abfrage nur einmal geparst und der Plan nur einmal ermittlet werden muss.

Ausserdem wird so wie erwähnt das Risiko von sql injection verringert.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:28
Code:
<?php
$mysqli = new mysqli("server", "username", "password", "database_name");

// TODO - Check that connection was successful.

$stmt = $mysqli->prepare("insert into person ( name, vorname) values ( :name, :vorname);");

// TODO check that $stmt creation succeeded

// s means the database expects a string
$stmt->bind_param("s", ???);

$stmt->execute();

$stmt->close();

$mysqli->close();
?>
Was müsste jetzt bei den Fragezeichen stehen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:31
Hi,

deine konkreten Werte - also sowas wie $_GET['vorname'].


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:34
$stmt = $mysqli->prepare("insert into person ( name, vorname) values ( ?, ?);");
$stmt->bind_param("ss", 'Puff', 'Michael');
http://php.net/manual/de/mysqli-stmt.bind-param.php
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:38
Ah, OK. Jetzt habe ich es verstanden. Das würde aber einen ziemlichen Refactoring Aufwand bedeuten. Ich glaube nicht, dass ich das in naher Zukunft machen werden. Höchstens wenn es mich packt, dann gibt es aber einen kompletten Rewrite.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:44
Dafür wird das System dann schneller, übersichtlicher und sicherer.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Fehlerhafte Abfrage

  Alt 6. Jul 2011, 20:54
Na ja, bei 15 Datensätzen ist die Performance nicht so wichtig und ich trage ja auch nicht hundert Datensätze auf einmal ein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz