[MySQLi] Bitte Struktur überprüfen.

B

ByeBye 242513

Guten Tag Community,

ich bin gerade dabei mich in MySQLi einzuarbeiten und habe bereits meine ersten Bausteine fertig. Könnt ihr einen Blick drüber werfen, ob meine Vorgehensweise in Ordnung ist oder evtl. Verbesserungswürdig (Sicherheit, Performance, etc.)

Zwei Fragen noch vorweg:
1. Bei MySQLi bzw. meinen Bausteinen muss ich keine Escape-Funktion alá mysql_real_escape_string einbauen, da dies standardmäßig von MySQLi erledigt wird, oder?

2. Mit welcher Methode kann ich beim Baustein "Daten hinzufügen" prüfen ob die Datensätze erfolgreich angelegt wurden? Bei einem einzigen Datensatz ist es kein Problem mit diesem Code, aber bei mehreren?
PHP:
if($result->affected_rows==1) {
  echo 'Eintrag erfolgreich.';
} else {
  echo 'Fehler beim Eintrag.';
}

Meine Bausteine:

Verbindungsdatei
PHP:
/* Neues Datenbank-Objekt erzeugen */
$db = new mysqli('localhost', '.....', '.....', '.....');

/* MySQL Verbindung prüfen */
if(mysqli_connect_errno()) { echo 'Fehler....'; exit(); }
      
/* Zeichenkodierung UTF-8 */
if(!$db->set_charset('utf8')) { echo 'Fehler....'; exit(); }

Daten hinzufügen
PHP:
/* Daten hinzufügen */
$sql = 'INSERT INTO `datenbank_test` (`name`, `mail`, `pass`) VALUES (?, ?, ?)';
if($result = $db->prepare($sql)) {
  $result->bind_param('sss', $name, $mail, $pass);      
  $name = 'Thomas';
  $mail = 'thomas.mueller@adresse.de';
  $pass = '123456';
  $result->execute();
  
  $name = 'Klaus';
  $mail = 'klaus.baumrat@adresse.de';
  $pass = '123456';
  $result->execute();
                 
  $result->close();
} else {
  echo 'Fehler....';
  $db->close();
  exit();
}

Daten löschen
PHP:
/* Daten löschen */
$userid = 1;
$sql = 'DELETE FROM `datenbank_test` WHERE userid=?';
if($result = $db->prepare($sql)) {
  $result->bind_param('i', $userid);
  $result->execute();
  $result->close();
} else {
  echo 'Fehler....';
  $db->close();
  exit();
}

Daten ausgeben mit Schleife
PHP:
/* Daten ausgeben mit Schleife */
$sql = 'SELECT `name`, `mail` FROM `datenbank_test` ORDER BY `name`';
if($result = $db->prepare($sql)) {
  $result->execute();
  $result->bind_result($name, $mail);
  while($result->fetch()) {
    echo 'Name: '.$name.'<br />';
    echo 'Mail: '.$mail.'<br />';
  }
  $result->close();
} else {
  echo 'Fehler....';
  $db->close();
  exit();
}

Daten ausgeben ohne Schleife
PHP:
/* Daten ausgeben ohne Schleife */
$userid = 1;
$sql = 'SELECT `name` FROM `datenbank_test` WHERE userid=?';
if($result = $db->prepare($sql)) {
  $result->bind_param('i', $userid);
  $result->execute();
  $result->bind_result($name);
  $result->fetch();
  echo $name;
  $result->close();
} else {
  echo 'Fehler....';
  $db->close();
  exit();
}

Ende
PHP:
$db->close();


Vielen Dank für's durchlesen :)
 
Danke, ansonsten passt der Code oder gibt es Verbesserungsvorschläge?
Und kennst du die Antwort auf Frage Nr. 1?
 
Wenn du mit bindParam arbeitest ist kein weiteres Behandeln der Daten notwendig. Führst du die normale QueryFunktion aus, so wird dies nicht automatisch von MySQLi erledigt.
 

Neue Beiträge

Zurück