
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?

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.

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();

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)");
9894200cookie-checkmysqli_query() erwartet mindestens 2 Parameter, 1 gegebenyes
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