Warning: mysqli_query() expects parameter 1 to be mysqli, string given in
Fasu
- datenbank
- php
1 dedlfix0 dedlfix
0 Auge0 Der Martin
Hallo, bin langsam am verzweifeln, ist schon jahre her als ich mit php und mysql rumhantiert habe, nun versuch ich mich in mysql(i) einzufuchsen... folgende fehlermeldung habe ich:
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\xampp\htdocs\portfolio\logs.php on line 31
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in D:\xampp\htdocs\portfolio\logs.php on line 33
Warning: mysqli_error() expects parameter 1 to be mysqli, null given in D:\xampp\htdocs\portfolio\logs.php on line 33
code ist wie folgt:
include("inc/global.php");
$datei = file ('kontoauszug.txt');
echo $datei[0]; // art
echo $datei[3]; // name der aktie
echo $datei[5]; //isin
echo $datei[7]; // stückzahl
echo $datei[9]; // Kurs
echo $datei[13]; // Datum
echo $datei[15]; // zeit
echo $datei[17]; // börse
echo $datei[21]; // währung
echo $datei[22]; // wert
echo $datei[26]; // provision
echo $datei[30]; // handelsplatzentgelt
$year = substr ( $datei[13], 6, 4 );
$month = substr ( $datei[13], 3, 2 );
$day = substr ( $datei[13], 0, 2 );
$hour = substr ( $datei[15], 0, 2 );
$minute = substr ( $datei[15], 3, 2 );
$timestamp = mktime($hour, $minute, 0, $month, $day, $year);
$sqlins = mysqli_query($db, "INSERT INTO trades
(mode, name, isin, count, buying_rate, date, market, currency, price, commission, fee)
VALUES
('$datei[0]', '$datei[3]', '$datei[5]', '$datei[7]', '$datei[9]', $timestamp, '$datei[17]', '$datei[21]', '$datei[22]', '$datei[26]', '$datei[30]')");
mysqli_query($sqlins) OR die(mysqli_error($sqlins));
hat wer ne idee?
Tach!
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\xampp\htdocs\portfolio\logs.php on line 31
hat wer ne idee?
Die mysqli-Funktionen sind nicht parameterkompatibel zu den mysql-Pendants. Schau bitte ins PHP-Handbuch, welche Parameter diese Funktionen erwarten und übergib sie in der korrekten Reihenfolge.
PDO ist auch noch eine Alternative, die anwenderfreundlicher zu benutzen ist. Allerdings sind da die Unterschiede noch etwas größer.
Außerdem sind Prepared Statements zu empfehlen oder musst noch den Kontextwechsel beachten.
dedlfix.
Tach!
$sqlins = mysqli_query($db, "INSERT INTO trades..."); mysqli_query($sqlins) OR die(mysqli_error($sqlins));
Achja, und was willst du eigentlich damit erreichen? Das Ergebnis von mysqli_query() übergibst du einem weiteren mysqli_query()-Aufruf? Das ist sinnfrei.
dedlfix.
Hallo
Hallo, bin langsam am verzweifeln, ist schon jahre her als ich mit php und mysql rumhantiert habe, nun versuch ich mich in mysql(i) einzufuchsen... folgende fehlermeldung habe ich:
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\xampp\htdocs\portfolio\logs.php on line 31 Warning: mysqli_query() expects parameter 1 to be mysqli, null given in D:\xampp\htdocs\portfolio\logs.php on line 33 Warning: mysqli_error() expects parameter 1 to be mysqli, null given in D:\xampp\htdocs\portfolio\logs.php on line 33
code ist wie folgt:
<?php // … $sqlins = mysqli_query($db, "INSERT INTO trades (mode, name, isin, count, buying_rate, date, market, currency, price, commission, fee) VALUES ('$datei[0]', '$datei[3]', '$datei[5]', '$datei[7]', '$datei[9]', $timestamp, '$datei[17]', '$datei[21]', '$datei[22]', '$datei[26]', '$datei[30]')"); mysqli_query($sqlins) OR die(mysqli_error($sqlins)); ?>
hat wer ne idee?
Wo wird $db
definiert?
Tschö, Auge
Wo wird
$db
definiert?
in der global.php
$db = "portfolio";
Hi,
Wo wird
$db
definiert?in der global.php
$db = "portfolio";
na also, Bingo. Das ist ein String, kein mysqli-Objekt.
So long,
Martin
Hallo
Wo wird
$db
definiert?in der global.php
$db = "portfolio";
Wie Martin schon sagte, ist dies der Fehler. Die Funktion mysqli_query erwartet, wenn sie im prozeduralen Stil ausgeführt wird, im ersten Parameter die Kennung der Datenbankverbindung. Schau dir im verlinkten Dokumentationsartikel die Parameterliste, insbesondere die Links im Abschnitt „link“ an.
Dass es weiterhin nicht funktioniert, die Rückgabe von mysqli_query
an einen weiteren Funktionsaufruf zu übergeben, hat dir dedlfix geschrieben. Das musst du auch noch überarbeiten.
Tschö, Auge
Hi,
Hallo, bin langsam am verzweifeln
sinnvoller als verzweifeln wäre hier ein Minimum an Debugging - oder erstmal die Fehlermeldungen lesen und verstehen.
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\xampp\htdocs\portfolio\logs.php on line 31
Das wird wohl diese Zeile sein:
$sqlins = mysqli_query($db, "INSERT INTO trades
Die Meldung besagt doch klar, dass der erste Parameter ein String ist, aber eigentlich ein mysqli-Objekt sein sollte. Wo kommt $db überhaupt her? Ist diese Variable überhaupt irgendwo definiert? Falls nein, nimmt PHP einen Leerstring als Ersatzwert an und schmeißt eine Notice, die du vermutlich nicht anzeigen lässt. Warum nicht?
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in D:\xampp\htdocs\portfolio\logs.php on line 33
Das ist dann ein Folgefehler, weil du das Ergebnis des ersten, fehlgeschlagenen Funktionsaufrufs weiter verwendest, ohne es überhaupt zu prüfen.
So long,
Martin