mysqli_query() erwartet mindestens 2 Parameter, 1 gegeben

Lesezeit: 3 Minuten

mysqli query erwartet mindestens 2 Parameter 1 gegeben
Joe Winfield

Dies mysqli_query Befehl führt zu dem folgenden Fehler

mysqli_query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

Warnung: mysqli_query() erwartet mindestens 2 Parameter, von denen 1 angegeben ist

Was bedeutet diese Fehlermeldung und wie kann sie behoben werden?

  • php.net/mysqli_query hat die Antwort (Sie müssen den Link explizit angeben, wenn Sie die mysqli-Funktionen verwenden)

    – Pekka

    9. November 2011 um 23:42 Uhr

  • Beachten Sie, dass das Erstellen einer Abfrage wie dieser Ihren Server für SQL-Injektionen öffnen wird, was selbst für einen Skript-Kiddie ausreichen könnte, um Ihren Server zu hacken und Passwörter zu stehlen / ihn als Teil eines Botnets zu verwenden / alles andere, was er möchte

    – Benutzer2486570

    4. Januar 2019 um 14:21 Uhr

1646959446 393 mysqli query erwartet mindestens 2 Parameter 1 gegeben
RonnyRules

Sie müssen die Verbindung, die Sie zu Ihrer Datenbank hergestellt haben, irgendwo früher auf Ihrer Seite angeben. Sie sollten diese Variable in die Abfrage einfügen. Angenommen, Sie haben eine Variable mit dem Namen erstellt $con. Dann sollte Ihr Code so aussehen.

mysqli_query($con,"INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

Von dem Handbuch

Procedural style

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

Sie werden das bemerken $link und $query Variablen.

Das bedeutet, dass Sie der Funktion eine gültige MySQL-Link-Ressource sowie die Abfrage übergeben müssen, die Sie ausführen möchten. Dadurch weiß die Funktion, welche hergestellte Verbindung zum Server verwendet werden soll.

Eine Link-Ressource kann erstellt werden mit:

Nur prozeduraler Stil: Eine Link-ID, die von mysqli_connect() oder mysqli_init() zurückgegeben wird

und ein Beispiel dafür finden Sie auf der oben genannten Handbuchseite.

Anscheinend verwechseln Sie mysql_query mit mysqli_query. Ersteres akzeptiert die SQL-Anweisung als ersten Parameter, während letzteres eine Link-ID (erstellt von Mysqli::connect) als ersten Parameter und die Anweisung als zweiten Parameter erwartet.

Die beiden Erweiterungen sind nicht miteinander kompatibel. Ich schlage vor, Sie wählen eine aus, lesen die Handbuchseiten darüber, wie Sie eine Verbindung herstellen, Abfragen ausführen usw., und vergessen, dass die andere existiert. Welche Sie auswählen, liegt bei Ihnen, mysqli ist funktionsreicher, aber dadurch komplizierter.

1646959446 649 mysqli query erwartet mindestens 2 Parameter 1 gegeben
Dharman

Wenn Sie einen der folgenden Fehler erhalten:

mysqli_query() erwartet mindestens 2 Parameter, 1 gegeben

mysqli_select_db() erwartet genau 2 Parameter

mysqli_real_escape_string() erwartet genau 2 Parameter

Das bedeutet, dass Sie den obligatorischen Parameter nicht an diese Funktionen übergeben haben. MySQLi-Prozedurstilfunktionen erwarten, dass der erste Parameter ein gültiger MySQLi-Verbindungslink ist.

Zum Beispiel, mysqli_query erwartet als erstes Argument einen Datenbanklink und als zweites Argument die eigentliche SQL-Abfrage.

Angenommen, Sie haben diesen oder einen ähnlichen Verbindungscode irgendwo am Anfang Ihres Skripts.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset ($mysqli, 'utf8mb4');

Sie können den in gespeicherten Verbindungslink verwenden $mysqli und übergeben Sie es als erstes Argument.

mysqli_query($mysqli, "INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

Die meisten prozeduralen Funktionen von mysqli erfordern, dass die Verbindung als Argument übergeben wird. Eine einfachere Option wäre jedoch, zum objektorientierten Stil zu wechseln. In OOP rufen Sie die Methode für das Objekt auf und übergeben nur die SQL als einzelnes Argument.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli($host, $user, $pass, $db);
$mysqli->set_charset('utf8mb4');

$mysqli->query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)"); 

Warnung!

Sie sollten parametrisiert verwenden vorbereitete Erklärungen anstatt Ihre Abfragen manuell zu erstellen. mysqli_query() sollte nur verwendet werden, wenn Sie keine Eingaben an Ihre SQL übergeben. Wann immer Sie Eingaben weitergeben möchten, wie bei INSERT Beispielsweise müssen Sie die Parameterbindung verwenden. Du kannst dich ersetzen mysqli_query() anrufen mit:

$stmt = $mysqli->prepare('INSERT INTO `counter`.`hits` (`page_hits`) VALUES (?)');
$stmt->bind_param('s', $hits);
$stmt->execute();

mysqli query erwartet mindestens 2 Parameter 1 gegeben
Shanaka Wickrama Arachchi

mysqli_query außer 2 Parametern ist die erste Variable mysqli_connect äquivalente Variable, die zweite ist die von Ihnen bereitgestellte Abfrage

$name1 = mysqli_connect(localhost,db_username ,db_pswd ,db_name );

$name2 = mysqli_query($name1,"INSERT INTO `counter`.`hits` (`page_hits`) VALUES (1)");

989420cookie-checkmysqli_query() erwartet mindestens 2 Parameter, 1 gegeben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy