Ankündigung

Einklappen
Keine Ankündigung bisher.

Datentransfer mit Sonder Zeichen

Einklappen

Neue Werbung 2019

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

  • Datentransfer mit Sonder Zeichen

    Mahlzeit ich habe folgendes Problem

    Fehlermeldung beim übertragen einer Mongo DB zu Mysql

    Error: INSERT INTO `protectedEntities` ( `Name` , `FQDN` , `Probleme` , `IP` , `operatingSystemVersion` , `Verwaltet` , `lizensiert` , `Beschreibung` , `Online` , `geloescht` ) VALUES ( 'TS'530-LENO', 't530-leno.qkomm.local', 'hat Probleme', '10.10.10.100', 'Windows 7 Professional', 'JA', '1', 'keine Beschreibung', 'JA', ' ' )
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '530-LENO', 't530-leno.qkomm.local', 'hat Probleme', '10.10.10.100', 'Wi' at line 3

    PHP-Code:



    $connection 
    = new Mongo("mongodb://" $db_user ":" $db_pass "@" .$db_host ":" $db_port);
    $collection $connection->devdb->protectedEntities;
    $result $collection->find()->toArray();
    $where=array();
    $cursor $collection->find($where);
    foreach (
    $cursor as $document) {
    if(empty(
    $document['upperName'])){
    $name " ";
    }
    else
    {
    $name ="{$document['upperName']}";
    }

    $verbindung mysqli_connect($serverurl$servername$serverpasswort$dbname);

    // Check connection
    if ($verbindung->connect_error) {
        die(
    "Connection failed: " . $$verbindung->connect_error);
    }
    $sql "INSERT INTO `protectedEntities` ( `Name` , `FQDN` , `Probleme` , `IP` , `operatingSystemVersion` , `Verwaltet` , `lizensiert` , `Beschreibung` , `Online` , `geloescht` )
    VALUES (
    '
    $name',
    '
    {$document['specifics']['fqdn']}',
    '
    $gefaerdet',
    '
    {$document['specifics']['ip']}',
    '
    {$document['specifics']['operatingSystemVersion']}',
    '
    $Managed',
    '
    {$document['shouldLicense']}',
    '
    $Beschreibung',
    '
    $Online',
    '
    $geloescht'
    )"
    ;
    if (
    $verbindung->query($sql) === TRUE) {

    // echo "Datenbank Import erfolgreich<br>";
    } else {
    echo 
    "Error: " $sql "<br>" $verbindung->error;
    }

    soweit so gut habe ich aber in der Mongo DB in dem Feld name ein Name wo ein Sonderzeichen ist siehe Beispiel

    ALUES ( 'TS'530-LENO', 't530-leno.qkomm.local' wie es bei TS'530 nunmal ist steigt mein script aus

    wäre echt dankbar für Hilfe.

  • #2
    Code:
    VALUES ( 'TS'530-LENO',
    Tja, Kontextwechsel beachten! -> https://php-de.github.io/jumpto/pdo/...red-statements bzw https://www.php-rocks.de/thema/49-ei...tatements.html

    Und die Code-Tags fehlen immer noch.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Nimm doch einfach Prepared Statements.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        Chorn dein Ansatz ist gut doch ich weis ja nicht wieviele Einträge abgearbeitet werden aus der Mongo DB es kann 1 sein aber auch 1000 könntest Du mir eventuell ein Beispiel zeigen wie ich das umsetzen kann.

        Die abfrage Mongo und Insert läuft in einer Schleife bis alle Felder von Mongo abgearbeitet sind.

        Kommentar


        • #5
          Wo ist das Problem? Du kannst doch mit PHP beliebig SQL-Code generieren. Und bitte verwende Code-Tags um Code im Forum einzufügen.

          Kommentar


          • #6
            ich weis ja nicht wieviele Einträge abgearbeitet werden
            Ist ja auch egal

            PHP-Code:
            $pdo = new PDO(...);
            $statement $pdo->prepare('INSERT INTO ...');

            foreach(
            $foo as $bar){
             
            $statement->execute([$bar['col'], ...]);

            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

            Kommentar


            • #7
              ja wie den ich lese ein Mongodb aus sprich das was PHP als echo aus geben würde nehme ich und gebe es direkt an SQL mit insert into weiter es seiden das feld ist leer dan wird es als leeres feld weiter gegeben.

              wie soll ich den da nun einen SQL-Code generieren

              Kommentar


              • #8
                PHP-Code:
                $db = new PDO('mysql:host=localhost;dbname=test;charset=utf8''root''', [
                    
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                ]);

                $db->query("
                    CREATE TEMPORARY TABLE temp (
                        id INT NOT NULL AUTO_INCREMENT,
                        foo VARCHAR(255) NOT NULL,
                        bar VARCHAR(255) NOT NULL,
                        PRIMARY KEY (id)
                    )
                "
                );

                $rows = [
                    [
                'foo' => 'A''bar' => 'a'],
                    [
                'foo' => 'B''bar' => 'b'],
                    [
                'foo' => 'C''bar' => 'c']
                ];

                $stmt $db->prepare("
                    INSERT INTO temp (`" 
                implode("`, `"array_keys($rows[0])) . "`)
                    VALUES (" 
                implode(", "array_fill(0count($rows[0]), "?")) . ")
                "
                );

                foreach (
                $rows as $row) {
                    
                $stmt->execute(array_values($row));

                Kommentar


                • #9
                  Pardong aber das verstehe ich nun garnicht mehr noch eine Tabell ?? und dan noch eine Temporäre

                  wie soll ich das den jetzt kombinieren?

                  ich frage bis jetzt die Mongo ja durch die Schleife von Mysql ab

                  Soll die Abfrage jetzt dur die Temporäre Tabelle passieren ??

                  ich habe nochmal den PHP Code bearbeitet jetzt sieht man genau das ich 2 verschiedene Datenbanken connecte

                  Kommentar


                  • #10
                    Zitat von Cyberscitymaste Beitrag anzeigen
                    Pardong aber das verstehe ich nun garnicht mehr noch eine Tabell ?? und dan noch eine Temporäre
                    Das ist ein Beispiel, damit du verstehst, wie es gemeint ist. Das ist nicht zum Copy-Pasten gedacht.

                    Zitat von Cyberscitymaste Beitrag anzeigen
                    ich frage bis jetzt die Mongo ja durch die Schleife von Mysql ab
                    Egal wie oft du es wiederholst, es hat keine Bedeutung dadurch. Woher die Daten kommen ist für die Situation irrelevant.

                    Kommentar


                    • #11
                      OK die ausgabe ist ja richtig von Mongo nur wie bekomme ich die eingabe jetzt ind die Mysql gehe ich mit PHPmyadmin und mache aus 'TS'530' das "TS'530" bei der insert anweisung dan geht es und es wird übernomen nur bei meinem geht es nicht

                      Kommentar


                      • #12
                        Langsam wird deine Ausdrucksweise sehr schlampig. Bitte nutze Satzzeichen, sonst versteht dich bald niemand mehr.

                        nur wie bekomme ich die eingabe jetzt ind die Mysql gehe ich mit PHPmyadmin und mache aus 'TS'530' das "TS'530" bei der insert anweisung dan geht es und es wird übernomen nur bei meinem geht es nicht
                        Nein, nichts phpMyAdmin. Du programmierst das alles direkt in PHP.
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Zitat von Cyberscitymaste Beitrag anzeigen
                          OK die ausgabe ist ja richtig von Mongo nur wie bekomme ich die eingabe jetzt ind die Mysql gehe ich mit PHPmyadmin und mache aus 'TS'530' das "TS'530" bei der insert anweisung dan geht es und es wird übernomen nur bei meinem geht es nicht
                          Wurde schon gesagt: Prepared Statements verwenden.

                          Kommentar


                          • #14
                            Ich schlage das noch mal vor:

                            PHP-Code:
                            $pdo = new PDO(...);
                            $statement $pdo->prepare('INSERT INTO ...');

                            foreach(
                            $foo as $bar){
                             
                            $statement->execute([$bar['col'], ...]);

                            ist aber technisch das gleiche wie bereits von hellbringer genannt, bezieht sich halt nur auf den Einfügen-Teil ohne Testdaten.
                            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                            Kommentar


                            • #15
                              vielen Dank so habe ich es gelöst

                              PHP-Code:
                              $einfuegen $verbindung->prepare("INSERT INTO `protectedEntities` ( `Name` , `FQDN` , `Probleme` , `IP` , `operatingSystemVersion` , `Verwaltet` , `lizensiert` , `Beschreibung` , `Online` , `geloescht`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                              $einfuegen->bind_param('ssssssssss'$name$document['specifics']['fqdn'], $gefaerdet$document['specifics']['ip'], $document['specifics']['operatingSystemVersion'],
                               
                              $Managed,
                               
                              $document['shouldLicense'],
                               
                              $Beschreibung,
                               
                              $Online,
                               
                              $geloescht); 
                              so funktioniert es 1A

                              Kommentar

                              Lädt...
                              X