Jnnbo: Fehler bei WHERE und Pagination einfügen

Moin,

hab ein kleines Problem. Meine Funktion sieht so aus

function produkte($mysqli, $suche=false) {
	$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
		   FROM web_produkte ";
		
	if ($suche) {
		    $stmt = $mysqli->prepare($select . "WHERE p_artnr=?" );
		    $stmt->bind_param("s", $suche);
  		} else {
		    $stmt = $mysqli->prepare($select);
		}

Funktioniert auch Problemlos, nur ich möchte gerne diese zwei Optionen hinzufügen: ORDER by p_id DESC LIMIT 100

Hinter das FROM kann ich es nicht einfach schreiben, dann bekomme ich ein Fehler wenn ich einen Parameter mit übergebe, der für das WHERE zuständig ist. Könnt ihr mir vielleicht sagen wie ich das hinzufüge?

Meine zweite Frage wäre, ist es sehr schwer bzw. sehr kompliziert eine Pagination einzufügen, dass immer ca. 100 Artikel zu sehen sind und unten eine Navigationsleiste mit der ich durch die Seiten blättern kann?

  1. Ok,

    mein erstes Problem habe ich gelöst:

    function produkte($mysqli, $suche=false) {
    	$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
    		   FROM web_produkte ";
    		
    		if ($suche) {
    			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
    			$stmt->bind_param("s", $suche);
      		} else {
    			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
    		}
    
    		$stmt->execute();
    

    Nur das ORDER by und LIMIT bekomme ich nicht eingefügt. Weiter besteht noch die Frage 2.

    1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

      mein erstes Problem habe ich gelöst:

      function produkte($mysqli, $suche=false) {
      	$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
      		   FROM web_produkte ";
      		
      		if ($suche) {
      			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
      			$stmt->bind_param("s", $suche);
        		} else {
      			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
      		}
      
      		$stmt->execute();
      

      Nur das ORDER by und LIMIT bekomme ich nicht eingefügt. Weiter besteht noch die Frage 2.

      Wenn bei Datenbank-Statements etwas nicht klappt, immer erst die Fehlermeldungen abfragen:

      Echo $stmt->error();

      http://dev.mysql.com/doc/apis-php/en/apis-php-mysqli-stmt.error.html

      Spirituelle Grüße
      Euer Robert
      robert.r@online.de

      --
      Möge der wahre Forumsgeist ewig leben!
      1. Hallo robertroth,

        Wenn bei Datenbank-Statements etwas nicht klappt, immer erst die Fehlermeldungen abfragen:

        es kommt diese Meldung

        Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

        function produkte($mysqli, $suche=false) {
        		define('DEBUG', true); 
        		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
        			   FROM web_produkte ";
        		
        		if ($suche) {
        			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
        			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );
        			$stmt->bind_param("s", $suche);
          		} else {
        			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
        		}
        		if( DEBUG && !$stmt ) { echo '<pre>', $mysqli->error, '</pre>'; }
        		$stmt->execute();
        

        Es liegt wohl an dieser Zeile $stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );

        1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

          Hallo robertroth,

          Wenn bei Datenbank-Statements etwas nicht klappt, immer erst die Fehlermeldungen abfragen:

          es kommt diese Meldung

          Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

          function produkte($mysqli, $suche=false) {
          		define('DEBUG', true); 
          		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
          			   FROM web_produkte ";
          		
          		if ($suche) {
          			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
          			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );
          			$stmt->bind_param("s", $suche);
            		} else {
          			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
          		}
          
          $stmt->execute();
          echo '<pre>', $stmt->error, '</pre>'; 
          

          Es liegt wohl an dieser Zeile $stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );

          Und wie lautet die Fehlermeldung?

          Spirituelle Grüße
          Euer Robert
          robert.r@online.de

          --
          Möge der wahre Forumsgeist ewig leben!
          1. Hallo robertroth,

            Und wie lautet die Fehlermeldung?

            wie gerade schon geschrieben

            Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

            1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

              Und wie lautet die Fehlermeldung?

              wie gerade schon geschrieben

              Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

              Die passt aber nicht zu dem geposteten Code. Außerdem solltest Du $stmt->error abfragen NACH dem execute()

              Spirituelle Grüße
              Euer Robert
              robert.r@online.de

              --
              Möge der wahre Forumsgeist ewig leben!
              1. Hallo robertroth,

                Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

                Die passt aber nicht zu dem geposteten Code. Außerdem solltest Du $stmt->error abfragen NACH dem execute()

                habe ich!

                	function produkte($mysqli, $suche=false) {
                		define('DEBUG', true); 
                		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
                									FROM web_produkte ";
                		
                		if ($suche) {
                			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
                			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );
                			$stmt->bind_param("s", $suche);
                  		} else {
                			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                		}
                		$stmt->execute();
                		if( DEBUG && !$stmt ) { echo '<pre>', $mysqli->error, '</pre>'; }
                		$stmt->bind_result($p_id, $p_type, $p_pkategorie, $p_code, $p_hersteller, $p_serie, $p_geraet, $p_bezeichnung, $p_bild, $p_artnr, $p_farbe, $p_inhalt, $p_preis, $p_bestand, $p_hinweis, $p_status);
                		$stmt->store_result();
                
                1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                  Hallo robertroth,

                  Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

                  Die passt aber nicht zu dem geposteten Code. Außerdem solltest Du $stmt->error abfragen NACH dem execute()

                  habe ich!

                  Nee, haste nich!

                  --
                  Möge der wahre Forumsgeist ewig leben!
                  1. Hallo robertroth,

                    Nee, haste nich!

                    dann habe ich es eben nicht und die Fehlermeldung bleibt einfach. Mehr als mein Code hier rein zu kopieren kann ich auch nicht machen.

                    1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                      Hallo robertroth,

                      Nee, haste nich!

                      dann habe ich es eben nicht und die Fehlermeldung bleibt einfach. Mehr als mein Code hier rein zu kopieren kann ich auch nicht machen.

                      In deinem geposteten Code fragst Du nach $mysqli->error, aber nicht nach $stmt->error.

                      Lies dir doch bitte mein Posting nochmal durch; ich meine das mit demkaputten kramdown

                      Spirituelle Grüße
                      Euer Robert
                      robert.r@online.de

                      --
                      Möge der wahre Forumsgeist ewig leben!
                      1. Hallo robertroth,

                        In deinem geposteten Code fragst Du nach $mysqli->error, aber nicht nach $stmt->error.

                        Achso, sorry das meinst du :/ Habe ich nun geändert

                        function produkte($mysqli, $suche=false) {
                        		define('DEBUG', true); 
                        		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
                        									FROM web_produkte ";
                        		
                        		if ($suche) {
                        			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
                        			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                        			$stmt->bind_param("s", $suche);
                          		} else {
                        			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                        		}
                        		$stmt->execute();
                        		if( DEBUG && !$stmt ) { echo '<pre>', $stmt->error, '</pre>'; }
                        		$stmt->bind_result($p_id, $p_type, $p_pkategorie, $p_code, $p_hersteller, $p_serie, $p_geraet, $p_bezeichnung, $p_bild, $p_artnr, $p_farbe, $p_inhalt, $p_preis, $p_bestand, $p_hinweis, $p_status);
                        

                        Lies dir doch bitte mein Posting nochmal durch; ich meine das mit demkaputten kramdown

                        Es kommt aber genau die gleiche Meldung

                        Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

                        1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                          Hallo robertroth,

                          In deinem geposteten Code fragst Du nach $mysqli->error, aber nicht nach $stmt->error.

                          Achso, sorry das meinst du :/ Habe ich nun geändert

                          function produkte($mysqli, $suche=false) {
                          		define('DEBUG', true); 
                          		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
                          									FROM web_produkte ";
                          		
                          		if ($suche) {
                          			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? " );
                          			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                          			$stmt->bind_param("s", $suche);
                            		} else {
                          			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                          		}
                          		$stmt->execute();
                          		if( DEBUG && !$stmt ) { echo '<pre>', $stmt->error, '</pre>'; }
                          		$stmt->bind_result($p_id, $p_type, $p_pkategorie, $p_code, $p_hersteller, $p_serie, $p_geraet, $p_bezeichnung, $p_bild, $p_artnr, $p_farbe, $p_inhalt, $p_preis, $p_bestand, $p_hinweis, $p_status);
                          

                          Lies dir doch bitte mein Posting nochmal durch; ich meine das mit demkaputten kramdown

                          Es kommt aber genau die gleiche Meldung

                          Es ist aber nicht mehr das Statement von vorhin. Du hast jetzt alles durcheinander gebracht.
                          Du hast jetzt zweimal prepare() im if-zweig. Das geht gar nicht!

                          Spirituelle Grüße
                          Euer Robert
                          robert.r@online.de

                          --
                          Möge der wahre Forumsgeist ewig leben!
                          1. Hallo robertroth,

                            Es ist aber nicht mehr das Statement von vorhin. Du hast jetzt alles durcheinander gebracht.
                            Du hast jetzt zweimal prepare() im if-zweig. Das geht gar nicht!

                            jetzt habe ich den Fehler gesehen :/

                            function produkte($mysqli, $suche=false) {
                            		define('DEBUG', true); 
                            		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
                            									FROM web_produkte ";
                            		
                            		if ($suche) {
                            			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? ORDER by p_id DESC LIMIT 100" );
                            			$stmt->bind_param("s", $suche);
                              		} else {
                            			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                            		}
                            		$stmt->execute();
                            		if( DEBUG && !$stmt ) { echo '<pre>', $stmt->error, '</pre>'; }
                            		$stmt->bind_result($p_id, $p_type, $p_pkategorie, $p_code, $p_hersteller, $p_serie, $p_geraet, $p_bezeichnung, $p_bild, $p_artnr, $p_farbe, $p_inhalt, $p_preis, $p_bestand, $p_hinweis, $p_status);
                            
                            1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                              Hallo robertroth,

                              Es ist aber nicht mehr das Statement von vorhin. Du hast jetzt alles durcheinander gebracht.
                              Du hast jetzt zweimal prepare() im if-zweig. Das geht gar nicht!

                              jetzt habe ich den Fehler gesehen :/

                              function produkte($mysqli, $suche=false) {
                              		define('DEBUG', true); 
                              		$select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
                              									FROM web_produkte ";
                              		
                              		if ($suche) {
                              			$stmt = $mysqli->prepare($select . "WHERE p_artnr=? ORDER by p_id DESC LIMIT 100" );
                              			$stmt->bind_param("s", $suche);
                                		} else {
                              			$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100" );
                              		}
                              		$stmt->execute();
                              		echo '<pre>', $stmt->error, '</pre>'; 
                              		$stmt->bind_result($p_id, $p_type, $p_pkategorie, $p_code, $p_hersteller, $p_serie, $p_geraet, $p_bezeichnung, $p_bild, $p_artnr, $p_farbe, $p_inhalt, $p_preis, $p_bestand, $p_hinweis, $p_status);
                              

                              Spirituelle Grüße
                              Euer Robert
                              robert.r@online.de

                              --
                              Möge der wahre Forumsgeist ewig leben!
                              1. Hallo robertroth,

                                genau so habe ich es in meinem Code stehen!

                                1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                                  Hallo robertroth,

                                  genau so habe ich es in meinem Code stehen!

                                  bist Du sicher?

                                  Guck dir die Zeile mit der Fehlerausgabe nochmal an

                                  Spirituelle Grüße
                                  Euer Robert
                                  robert.r@online.de

                                  --
                                  Möge der wahre Forumsgeist ewig leben!
                                  1. Hallo robertroth,

                                    bist Du sicher?

                                    ja bin ich, ich habe ehrlich gesagt auch keine Lust mehr mit dir jetzt darüber zu diskutieren. Du ziehst alles immer ins unendliche. Ich habe dir geschrieben was ich sehe, was ich mache und außerdem habe ich dir auch schon geschrieben dass ich den Fehler gefunden habe.

                                    1. Hallo Jnnbo,

                                      bist Du sicher?

                                      ja bin ich, ich habe ehrlich gesagt auch keine Lust mehr mit dir jetzt darüber zu diskutieren. Du ziehst alles immer ins unendliche. Ich habe dir geschrieben was ich sehe, was ich mache und außerdem habe ich dir auch schon geschrieben dass ich den Fehler gefunden habe.

                                      ich kann verstehen, dass man mal genervt ist. Aber wenn Robert sich bemüht, Dir zu helfen, könntest Du ihm auch einfach danke sagen. Auch wenn Du den Fehler schon gefunden hast und das von Robert noch darüber hinausgeht. Ist nicht böse gemeint, nur als Tipp.

                                      Gruß Dennis

                                    2. Hallo Jnnbo,

                                      bist Du sicher?

                                      ja bin ich, ich habe ehrlich gesagt auch keine Lust mehr mit dir jetzt darüber zu diskutieren.

                                      Ich setz da noch mal einen drauf:
                                      Du möchtest offenbar eine kommerzielle Seite für Druckerzubehör aufbauen, das heißt, du möchtest damit auch Geld verdienen. Ich habe kein Problem damit, dass du dir hier unentgeltlich Hilfe bekommst. Jeder hat mal klein angefangen und sehr wahrscheinlich ist dein Unternehmen deutlich kleiner als Amazon.

                                      Aber wie du hier mit Ratschlägen umgehst und den Leuten, die dir Hilfe zukommen lassen, vor den Kopf schlägst, ist nicht unbedingt zielführend.

                                      Dennoch wünsche ich dir Erfolg beim Aufbau deines Unternehmens.

                                      Bis demnächst
                                      Matthias

                                      --
                                      Signaturen sind bloed (Steel) und Markdown ist mächtig.
                                      1. Hallo Matthias,

                                        Du möchtest offenbar eine kommerzielle Seite für Druckerzubehör aufbauen, das heißt, du möchtest damit auch Geld verdienen. Ich habe kein Problem damit, dass du dir hier unentgeltlich Hilfe bekommst. Jeder hat mal klein angefangen und sehr wahrscheinlich ist dein Unternehmen deutlich kleiner als Amazon.

                                        Es wird eine Interne Seite, dass ich von meinen Excel Listen weg komme. Mehr wird daraus nicht.

                                        Aber wie du hier mit Ratschlägen umgehst und den Leuten, die dir Hilfe zukommen lassen, vor den Kopf schlägst, ist nicht unbedingt zielführend.

                                        Nein, diese Diskussion gestern Abend hatte nichts mehr mit Zielführend zu tun. Robert muss immer und immer wieder eine drauf setzten, das kannst du bei 2/3 seiner Postings lesen.

                                        Ich habe geschrieben, "Fehler gefunden". Warum muss dann noch weiter Diskussion werden? Unnötig oder?

                                        Außerdem wenn er mir unterstellt, dass ich lüge muss ich mir dieses also gefallen lassen nur weil er wahrscheinlich 40 Jahre älter ist? NEIN muss ich nicht. Ich habe ihm 10 mal geschrieben wie die Fehlermeldung lautet er meinte es kann nicht sein, doch KANN sein.

                                        Denn die Fehlermeldung lautete, dass etwas nicht hinzugefügt werden kann und hatte mit dem eigentlich SQL nichts zu tun, aber er wollte seinen Kopf durchsetzen, kann es zwar versuchen muss sich aber nicht wundern, wenn er auch mal ein Kommentar zurück bekommt.

                                        Ich bin im sehr dankbar für die Hilfe was ich von ihm bis jetzt bekommen habe, aber dennoch muss ich mir nicht alles gefallen lassen.

                          2. Hallo Robert,

                            Du hast jetzt zweimal prepare() im if-zweig.

                            sagte ich ja. Wollte nur nicht so mit der Holzhammer-Methode drauf hinweisen :-)

                            Gruß Dennis

                            Ps: Dass das im zweiten Posting nicht drin war hab ich gar nicht gesehen.

                      2. Hallo robertroth,

                        Lies dir doch bitte mein Posting nochmal durch; ich meine das mit dem kaputten kramdown

                        Auch im alten Forum musste man extrem aufpassen, wenn man beim Zitieren Codeblöcke auseinanderriss. Das ist hier nicht anders. Die Vorschau hätte geholfen.

                        Bis demnächst
                        Matthias

                        --
                        Signaturen sind bloed (Steel) und Markdown ist mächtig.
                        1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                          Hallo robertroth,

                          Lies dir doch bitte mein Posting nochmal durch; ich meine das mit dem kaputten kramdown

                          Auch im alten Forum musste man extrem aufpassen, wenn man beim Zitieren Codeblöcke auseinanderriss. Das ist hier nicht anders. Die Vorschau hätte geholfen.

                          Mit dem Tablet den Formatfehler zu finden, ist relativ schwer.

                          Ich hatte dreimal Vorschau und dreimal berichtigen. Dann hat es mir gereicht.

                          Spirituelle Grüße
                          Euer Robert
                          robert.r@online.de

                          --
                          Möge der wahre Forumsgeist ewig leben!
                          1. Hallo robertroth,

                            Auch im alten Forum musste man extrem aufpassen, wenn man beim Zitieren Codeblöcke auseinanderriss. Das ist hier nicht anders. Die Vorschau hätte geholfen.

                            Mit dem Tablet den Formatfehler zu finden, ist relativ schwer.

                            Das kann ich nachvollziehen. Dennoch wäre dein Beitrag auch im alten Forum nicht optimal formatiert gewesen, da man eben auch schließende bzw. öffnende code-tags einfügen musste, wenn man Code gleich innerhalb des Quelltextes kommentieren wollte.

                            Der Nachteil an Kramdown ist, dass die Zeilenumbrüche nicht gerendert werden, wenn das code-Element nicht geschlossen ist.

                            Bis demnächst
                            Matthias

                            --
                            Signaturen sind bloed (Steel) und Markdown ist mächtig.
          2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

            Please Mr. Forumsgeist tear that Kram down!

            Spirituelle Grüße
            Euer Robert
            robert.r@online.de

            --
            Möge der wahre Forumsgeist ewig leben!
        2. Hallo Jnnbo,

            $select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
            	   FROM web_produkte ";
          
            	$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );
            	$stmt->bind_param("s", $suche);
          

          lass Dir am besten mal ausgeben, was Du da in die prepare()-Methode reinsteckst, also z.B. mittels echo $select . "ORDER by p_id DESC LIMIT 100 ". Wenn Du dann die Fragezeichen zählst und das ganze mit dem was Du bind_param() übergibst vergleichst, sollte sich Dir die Fehlermeldung erschließen.

          Gruß Dennis

          1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

            Hallo Jnnbo,

              $select = "SELECT p_id, p_type, p_pkategorie, p_code, p_hersteller, p_serie, p_geraet, p_bezeichnung, p_bild, p_artnr, p_farbe, p_inhalt, p_preis, p_bestand, p_hinweis, p_status 
              	   FROM web_produkte ";
            
              	$stmt = $mysqli->prepare($select . "ORDER by p_id DESC LIMIT 100 " );
              	$stmt->bind_param("s", $suche);
            

            lass Dir am besten mal ausgeben, was Du da in die prepare()-Methode reinsteckst, also z.B. mittels echo $select . "ORDER by p_id DESC LIMIT 100 ". Wenn Du dann die Fragezeichen zählst und das ganze mit dem was Du bind_param() übergibst vergleichst, sollte sich Dir die Fehlermeldung erschließen.

            Dennis, woher hast du denn jetzt diesen Quellcode?
            Jnnbo hat das bind_param doch nur bei WHERE stehen und bei ORDER BY gibt es gar keins.

            Spirituelle Grüße
            Euer Robert
            robert.r@online.de

            --
            Möge der wahre Forumsgeist ewig leben!
            1. Hallo robertroth,

              Dennis, woher hast du denn jetzt diesen Quellcode?
              Jnnbo hat das bind_param doch nur bei WHERE stehen und bei ORDER BY gibt es gar keins.

              hierher. Als weiteren Hinweis habe ich aber alles andere rausgeschmissen.

              Gruß Dennis

              1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                Hallo robertroth,

                Dennis, woher hast du denn jetzt diesen Quellcode?
                Jnnbo hat das bind_param doch nur bei WHERE stehen und bei ORDER BY gibt es gar keins.

                hierher. Als weiteren Hinweis habe ich aber alles andere rausgeschmissen.

                Es macht auch heute keinen Spaß mit Jnnbo, weil er nicht das tut, was man ihm rät, sondern seinen Code immer an mehreren Stellen gleichzeitig ändert. So kann man nicht vernünftig debuggen.

                Außerdem ist es Unsinn, $stmt->error genau dann abzufragen, wenn es kein gültiger Ressourcelink ist...

                Spirituelle Grüße
                Euer Robert
                robert.r@online.de

                --
                Möge der wahre Forumsgeist ewig leben!
                1. Hallo robertroth,

                  Es macht auch heute keinen Spaß mit Jnnbo, weil er nicht das tut, was man ihm rät, sondern seinen Code immer an mehreren Stellen gleichzeitig ändert. So kann man nicht vernünftig debuggen.

                  du hast mir gesagt ich soll es NACH $stmt->execute(); machen, genau das habe ICH auch gemacht.

                  1. Hallo Robert, hallo Jnnbo,

                    Es macht auch heute keinen Spaß mit Jnnbo, weil er nicht das tut, was man ihm rät, sondern seinen Code immer an mehreren Stellen gleichzeitig ändert. So kann man nicht vernünftig debuggen.

                    du hast mir gesagt ich soll es NACH $stmt->execute(); machen, genau das habe ICH auch gemacht.

                    ist doch alles gut. Schlaft ne Nacht drüber und morgen geht's dann weiter. Ist doch top, Robert, dass Du hier hilfst. Und wenn Jnnbo mal was anderes macht, als Du beabsichtigt hast, macht er's sicher nicht extra. Das passiert halt schon mal, gerade wenn man lernt.

                    Gruß, Dennis

                  2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                    Hallo robertroth,

                    Es macht auch heute keinen Spaß mit Jnnbo, weil er nicht das tut, was man ihm rät, sondern seinen Code immer an mehreren Stellen gleichzeitig ändert. So kann man nicht vernünftig debuggen.

                    du hast mir gesagt ich soll es NACH $stmt->execute(); machen, genau das habe ICH auch gemacht.

                    JEIN!

                    Du hast da noch ein if(debug ...) davor. Du dürftest eigentlich überhaupt keine Fehlermeldung bekommen, da du sie nur bei !$stmt anforderst. Wenn aber $stmt ungültig ist, kann das auch nicht mehr als Referenz für eine Fehlermeldung dienen

                    Spirituelle Grüße
                    Euer Robert
                    robert.r@online.de

                    --
                    Möge der wahre Forumsgeist ewig leben!