Bekomme immer: Warning: preg_match()....

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bekomme immer: Warning: preg_match()....

    Hallo zusammen,

    hoffe ihr könnt mir ein wenig weiter helfen! Bekomme immer diese
    Fehlermeldung : Warning: preg_match() expects parameter 2 to be
    string, array given in....!
    Könnte mir nur vorstellen das bei dem sql-syntax irgendwas nicht
    stimmt! Zur info: Ich möchte aus einer DB per Zufallsgenerator einen
    bestimmten user bekommen! Das alles funktioniert auch wenn ich es
    nicht mit einer For-Schleife versuche und ohne arrays! Das heißt
    dann aber, dass ich nur einen User bekomme! Möchte aber 5
    verschiedene user nacheinander auslesen! Deshalb habe ich das mit
    der for-schleife versucht und die Ergebnisse sollen dann dem
    jeweiligen array zugeordnet werden! Aber irgendwas sehe ich nicht
    was falsch ist! Hoffe ihr könnt mir weiter helfen! Bin jetzt auch nicht
    der absolute crack in php! Hoffe auf eure Unterstützung....


    hier der CODE:

    PHP-Code:

    if ($config['list_newmembers'] > 0) {
            
            
    $online = array();
            
    $result = array();
            
          for (
    $i=1$i<6$i++) {  
        

            
    srand ((double)microtime()*1000000);
            
    $zufall rand(100,110);
        
        
    $result[$i] = "SELECT level,id,username, (case gender when 'M' then 'm' when 'F' then 'w' else 'Couple' end ) as  gender,picture FROM user WHERE id = '$zufall'";
        
            
    $online[$i] = "SELECT userid,is_online FROM onlineusers WHERE userid = '$zufall'";


            }  
    /*  ENDE FOR-SCHLEIFE   */ 
    Habe den Ausgabeteil nicht mit gepostet!

    Vielen dank schon mal im voraus
    Zuletzt geändert von tfo; 17.01.2007, 14:33.

  • #2
    da bist du auf dem völlig falschen dampfer. das hat nichts mit mysql zu tun sondern nur mit php. und wir benötigen die zeile, die den fehler verursacht.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Kann dir gerne das ganze Warning-Statement posten:


      PHP-Code:
       Warningpreg_match() expects parameter 2 to be string, array given in C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB.php on line 471

      DB Error
      syntax errorDB_Error Object
      (
          [
      error_message_prefix] => 
          [
      mode] => 16
          
      [level] => 1024
          
      [code] => -2
          
      [message] => DB Errorsyntax error
          
      [userinfo] => Array [nativecode=1064 ** You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'Array' at line 1]
          [
      backtrace] => Array
              (
                  [
      0] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB.php
                          
      [line] => 748
                          
      [function] => PEAR_Error
                          
      [class] => DB_Error
                          
      [type] => ->
                      )

                  [
      1] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\PEAR.php
                          
      [line] => 539
                          
      [function] => DB_Error
                          
      [class] => DB_Error
                          
      [type] => ->
                      )

                  [
      2] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB\common.php
                          
      [line] => 501
                          
      [function] => raiseError
                          
      [class] => DB_mysql
                          
      [type] => ->
                      )

                  [
      3] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB\mysql.php
                          
      [line] => 775
                          
      [function] => raiseError
                          
      [class] => DB_mysql
                          
      [type] => ->
                      )

                  [
      4] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB\mysql.php
                          
      [line] => 227
                          
      [function] => mysqlRaiseError
                          
      [class] => DB_mysql
                          
      [type] => ->
                      )

                  [
      5] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB\common.php
                          
      [line] => 1145
                          
      [function] => simpleQuery
                          
      [class] => DB_mysql
                          
      [type] => ->
                      )

                  [
      6] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\libs\Pear\DB\common.php
                          
      [line] => 1458
                          
      [function] => query
                          
      [class] => DB_mysql
                          
      [type] => ->
                      )

                  [
      7] => Array
                      (
                          [
      file] => C:\apachefriends\xampp\htdocs\boerse\index.php
                          
      [line] => 266
                          
      [function] => getAssoc
                          
      [class] => DB_mysql
                          
      [type] => ->
                      )

              )

          [
      callback] => errhndl

      das bekomme ich immer als Hinweis! Also hätte ich lieber in PHP-Thread posten sollen? Kann ich den Thread denn hier verschieben oder kann das nur ein MOD?

      Kommentar


      • #4
        Bitte Regeln lesen, Code umbrechen!

        Du übergibst an preg_match ein Array an einer Stelle, wo es einen String haben möchte.

        Und in deiner Query steht ebenfalls "Array" an einer Stelle, wo nur ein String stehen sollte.


        (Und Verschieben ist bereits passiert.)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ja wenn ich das ändere mit dem array in dem query, dann habe ich
          doch nur einen Wert oder sehe ich das falsch?
          Oder wie soll ich das mit dem auslesen sonst machen?

          PHP-Code:
           $online "SELECT userid,is_online FROM onlineusers
                          WHERE userid = '
          $zufall'"
          So funktioniert das ja auch! Nur wie schon gesagt bekomme ich dann nur einen WERT!

          Kommentar


          • #6
            In der for-schleife die Abfrage machen. Das Ergebnis in einen Array schreiben.
            Nach der for-Schleife den Array auswerten.
            it's not a bug,
            it's a feature!

            Kommentar


            • #7
              @XGremliN:
              mhm kurz und knapp beantwortet und mir einen großen gefallen damit
              gemacht! Klar leuchtet ja auch ein aber manchmal verliert man die
              ganze Übersicht und man steht voll auf dem Schlauch!
              Werde das dann eben mal versuchen umzusetzen! Vielen dank
              Zuletzt geändert von tfo; 17.01.2007, 15:13.

              Kommentar


              • #8
                Queries in Schleifen? Igitt ...


                Es gibt auch SQL-Operatoren wie bspw. IN() ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Ja wie soll man das denn umsetzen? z.B. IN() kann man doch nur
                  Gleichheiten aufzählen wie
                  PHP-Code:
                  WHERE Vorwahl IN ('030''03342''040'); 
                  usw. oder sehe ich das falsch bzw. wie ist das von dir gemeint?

                  Kommentar


                  • #10
                    Das was in den Klammern nach IN steht, sind deine ID's zu den Datensaätzen, die du auslesen willst. Also einfach einen ID-Array befüllen und dann eine SQL abfrage mit "WHERE id IN($id_array)"
                    it's not a bug,
                    it's a feature!

                    Kommentar


                    • #11
                      Na ja, wenn man wüsste mit welchem DBMS du arbeitest ...

                      Bei MySQL bspw. kann man einfach ORDER BY RAND() mit LIMIT kombinieren.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Vielen dank für die Info's! Das erleichtert die Abfrage und Ausgabe
                        sehr! Da merkt man den unterschied wenn man nicht so fit ist in der Materie....man denkt zu kompliziert!

                        Also versuche das mal mit IN() !

                        Kommentar

                        Lädt...
                        X