Fasu: Warning: mysqli_query() expects parameter 1 to be mysqli, string given in

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?

  1. 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.

    1. 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.

  2. 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

    --
    Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
    Terry Pratchett, „Gevatter Tod“
    1. Wo wird $db definiert?

      in der global.php

      $db			  = "portfolio";
      
      1. Hi,

        Wo wird $db definiert?

        in der global.php

        $db			  = "portfolio";
        

        na also, Bingo. Das ist ein String, kein mysqli-Objekt.

        So long,
         Martin

      2. 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

        --
        Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
        Terry Pratchett, „Gevatter Tod“
  3. 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