mysqli_query() expects at least 2 parameters, 1 given

VallTeK

Grünschnabel
Hallo.
Ich mache gerade ein Register/Login System. Doch hier
habe ich einen Fehler.
Ich habe ein Problem nämlich mit diesem Error:
mysqli_query() expects at least 2 parameters, 1 given

Es wird der Code:
PHP:
$res = mysqli_query($sql);
damit gemeint aber ich weis nicht was das Problem ist.

hier ist der komplette Code von der Datei:
PHP:
<?php
  include"connect.php";
  $username = $_POST['username'];
  $password = $_POST['password'];

  $sql = "INSERT INTO forum.users(username, password)
      VALUES ('$username', '$password');
  ";
  $res = mysqli_query($sql);
  if ($res) {
    echo "Erfolgreich registriert mit dem Benutzernamen : ".$username;
  } else {
    echo "Registrieren fehlgeschlagen. (Bitte stelle sicher das du alle Felder ausgefüllt hast.)<br/>";
    echo "Msql Error : ".mysqli_error();
  }
?>

Kann mir jemand helfen?
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
Wo ist den die Verbindung zur Datenbank ?
Das sollte so ungefähr aussehen

PHP:
$sql = "INSERT INTO `forum.users` (`username`, `password`)  VALUES ('$username', '$password')";
$mysqli=mysqli_connect("localhost", "", "", "");
$res = mysqli_query($mysqli,$sql);
if ($res) {
...
Auserdem hast du Sql Injections Gefahr in deinen Code.
Du solltest mysqli_real_escape_string() benutzen
 
Zuletzt bearbeitet:

ComFreek

Mod | @comfreek
Moderator
Insgesamt also folgende Baustellen:
  • SQL Injection
  • Kaputte Businesslogik: doppelte Nutzernamen ohne weiteres Identifizierungsmerkmal (z. B. E-Mail-Adresse)
  • Passwörter werden im Klartext in der DB gespeichert
  • Interne Fehler (mysqli_error) werden ausgegeben
  • XSS
@VallTeK Vielleicht solltest du dir ein Grundlagenbuch auf dem Gebiet von PHP schnappen und das durcharbeiten :)
 

EuroCent

Klappstuhl 2.0
Hallo.
Ich mache gerade ein Register/Login System. Doch hier
habe ich einen Fehler.
Ich habe ein Problem nämlich mit diesem Error:
mysqli_query() expects at least 2 parameters, 1 given

Es wird der Code:
PHP:
$res = mysqli_query($sql);
damit gemeint aber ich weis nicht was das Problem ist.

hier ist der komplette Code von der Datei:
PHP:
<?php
  include"connect.php";
  $username = $_POST['username'];
  $password = $_POST['password'];

  $sql = "INSERT INTO forum.users(username, password)
      VALUES ('$username', '$password');
  ";
  $res = mysqli_query($sql);
  if ($res) {
    echo "Erfolgreich registriert mit dem Benutzernamen : ".$username;
  } else {
    echo "Registrieren fehlgeschlagen. (Bitte stelle sicher das du alle Felder ausgefüllt hast.)<br/>";
    echo "Msql Error : ".mysqli_error();
  }
?>

Kann mir jemand helfen?
Zum einen fehlt dem mysqli_query eine Connection oder ein Link.
Denn wo bitte soll mysqli_query wissen, auf welche Datenbank er connecten soll?

Hier mal eine Datenbank-Klasse die Ich oft verwende, vielleicht nicht die beste :)
https://www.tutorials.de/threads/datenbank-klasse-mysqli-verbesserung.405203/
 

VallTeK

Grünschnabel
Insgesamt also folgende Baustellen:
  • SQL Injection
  • Kaputte Businesslogik: doppelte Nutzernamen ohne weiteres Identifizierungsmerkmal (z. B. E-Mail-Adresse)
  • Passwörter werden im Klartext in der DB gespeichert
  • Interne Fehler (mysqli_error) werden ausgegeben
  • XSS
@VallTeK Vielleicht solltest du dir ein Grundlagenbuch auf dem Gebiet von PHP schnappen und das durcharbeiten :)
Ich habe das ganze von einem Tutorial abgeschrieben aber durch die ganzen Antworten gemerkt dass das Tutorial wohl der größte Müll ist. Könntest du ein Grundlagen Buch empfehlen?