Ankündigung

Einklappen
Keine Ankündigung bisher.

Resultate falsch Gross –Kleinschreibung.

Einklappen

Neue Werbung 2019

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

  • Resultate falsch Gross –Kleinschreibung.

    Hi

    Mir ist heute aufgefallen das wenn ich eine SQL Abfrage in PHP mache, sind manche Resultate teilweise falsch bei der Gross –Kleinschreibung.

    Bsp. Resultate:

    phpadmin Abfrage AbCd, Auto

    PHP Abfrage: Abcd, auto


    Weiss jemand wieso?

    Hier mein Code:

    PHP-Code:
    <?php
    try
    {
       
    $pdo = new PDO('mysql:host='.HOST.';dbname='.DATABASE';charset=utf8'USERPASSWORD);
    }
    catch (
    PDOException $e)
    {
       print 
    "Error!: " $e->getMessage() . "<br/>";
       die();
    }
    ?>
    PHP-Code:
    <?php
    require_once("../../config.php");
    require_once(
    "../../db_connect.php");

    $sql "SELECT
      tbl_daily.*,
      tbl_notes.idDaily AS idDailyN,
      tbl_notes.notes AS NoteText,
      tbl_notes.createdDate AS NoteTime,
      tbl_notes.userName AS NoteUser  
    FROM
      tbl_daily
    LEFT JOIN
      tbl_notes ON tbl_daily.idDaily = tbl_notes.idDaily
    WHERE
      tbl_daily.status != 'todo'
    ORDER BY
      `tbl_daily`.`idDaily` ASC"
    ;

    $result $pdo->prepare($sql) or die("MySQL-Error: " mysql_error());
    $result->execute();

    while (
    $row $result->fetch()) {
        echo 
    $row['userName']."<br>";
    }

  • #2
    Das liegt wahrscheinlich an der verwendeten Kollation.
    Der 2.Fall von dir ist der Normalfall, dass heisst das Gross- und Kleinschreibung nicht beachtet werden.
    Du kannst aber die Kollation auch in der Abfrage unterbringen.
    Collation bin ist ein binärvergleich, der die Gross- und Kleinschreibung dann beachtet.

    Siehe auch https://dev.mysql.com/doc/refman/5.5...t-collate.html

    Erstelle einmal von beiden Datenbanken ein SQL Dump, nur Struktur, ohne Daten und poste es hier.

    Kommentar


    • #3
      Es geschieht aber nur bei zwei Ergebnissen von 30, bei den andern stimmt alles.

      Hier mein Dump:
      Code:
      -- phpMyAdmin SQL Dump
      -- version 4.5.1
      -- http://www.phpmyadmin.net
      --
      -- Host: 127.0.0.1
      -- Erstellungszeit: 25. Apr 2017 um 20:53
      -- Server-Version: 10.1.19-MariaDB
      -- PHP-Version: 5.6.28
      
      SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
      SET time_zone = "+00:00";
      
      
      /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
      /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
      /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
      /*!40101 SET NAMES utf8mb4 */;
      
      --
      -- Datenbank: `dailyinspection`
      --
      
      -- --------------------------------------------------------
      
      --
      -- Tabellenstruktur für Tabelle `tbl_daily`
      --
      
      CREATE TABLE `tbl_daily` (
        `idDaily` int(11) NOT NULL,
        `createdDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `doneDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        `status` varchar(50) NOT NULL DEFAULT 'todo',
        `dayTime` tinyint(1) NOT NULL,
        `IBX` varchar(50) NOT NULL,
        `userName` varchar(50) NOT NULL,
        `group` varchar(30) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      
      -- --------------------------------------------------------
      
      --
      -- Tabellenstruktur für Tabelle `tbl_notes`
      --
      
      CREATE TABLE `tbl_notes` (
        `idNotes` int(11) NOT NULL,
        `idDaily` int(11) NOT NULL,
        `createdDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `notes` text NOT NULL,
        `userName` varchar(50) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      
      --
      -- Indizes der exportierten Tabellen
      --
      
      --
      -- Indizes für die Tabelle `tbl_daily`
      --
      ALTER TABLE `tbl_daily`
        ADD PRIMARY KEY (`idDaily`);
      
      --
      -- Indizes für die Tabelle `tbl_notes`
      --
      ALTER TABLE `tbl_notes`
        ADD PRIMARY KEY (`idNotes`);
      
      --
      -- AUTO_INCREMENT für exportierte Tabellen
      --
      
      --
      -- AUTO_INCREMENT für Tabelle `tbl_daily`
      --
      ALTER TABLE `tbl_daily`
        MODIFY `idDaily` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=577;
      --
      -- AUTO_INCREMENT für Tabelle `tbl_notes`
      --
      ALTER TABLE `tbl_notes`
        MODIFY `idNotes` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=285;
      /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
      /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
      /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

      Kommentar


      • #4
        An dem Code ändert nix die Groß- und Kleinschreibung. Kann es sein das du mit tbl_notes.userName und tbl_daily.userName durcheinander kommst?!

        Kommentar


        • #5
          Hallo,

          mir sind auch noch zwei Sachen aufgefallen:
          1. Du vermischst PDO mit der alten obsoleten mysql* Schittstelle, die es ab PHP 7 nicht mehr gibt. Ich rede von dieser Zeile hier:
          PHP-Code:
          $result $pdo->prepare($sql) or die("MySQL-Error: " mysql_error()); 
          Stelle PDO so ein, dass es bei einem Fehler eine Exception schmeißt:
          PHP-Code:
          $pdo = new \PDO('mysql:host='.HOST.';dbname='.DATABASE';charset=utf8'USERPASSWORD, array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION)); 
          2. Du verwendest PHP 5.6.28, aktuell ist jedoch PHP 5.6.30.

          Ok, eigentlich 3: Sicher, dass
          PHP-Code:
          while ($row $result->fetch()) {
              echo 
          $row['userName']."<br>";

          geht?

          Sollte das nicht eher so aussehen:
          PHP-Code:
          while ($row $result->fetch(\PDO::FETCH_ASSOC, \PDO::FETCH_ORI_NEXT)) {
             echo 
          $row['userName'] . 'br />';

          ?


          Und bitte:
          - verwende Namespaces
          - lerne den Unterschied zwischen Single und Double Quotes. Dein Code Schnippsel macht nicht den Eindruck, dass Du den Unterschied verstanden hast
          - halte Dich möglichst an gängige Konventionen: http://symfony.com/doc/current/contr...standards.html
          - verwende für deinen Mehrzeiligen SQL am besten HEREDOC oder NOWDOC, sieht gleich viel schöner aus: http://php.net/manual/de/language.ty....syntax.nowdoc
          - massenweise String Verbindungen (concat) macht man am besten mittels sprintf: http://www.php.net/sprintf Wenn Du den obigen Konventions-Link bereits beherzigt hast, dann sollte die Verwendung von sprintf schon selbstverständlich für dich sein.

          Ist nichts persönliches gegen Dich, aber bitte informiert euch vor dem Posten besser (vorallem hier im Forum!!!). Ich hasse es, mich ständig und ständig zu wiederholen. Es kommt hier fast täglich einer an, der Double/Single Quotes nicht kann, der Code Smells verwendet, oder der sonstige Schweinereien betreibt, von denen hier mehrfach in unterschiedlichen Themen bereits (gut begründet!!!) abgeraten wurde. Außerdem werden ähnliche oder gleiche Sachverhalte immer und immer durchgekaut. Sorry, aber da macht das Helfen langsam keinen Spaß mehr!


          MFG

          derwunner

          Kommentar


          • #6
            Zitat von derwunner Beitrag anzeigen
            Ist nichts persönliches gegen Dich, aber bitte informiert euch vor dem Posten besser (vorallem hier im Forum!!!). Ich hasse es, mich ständig und ständig zu wiederholen. Es kommt hier fast täglich einer an, der Double/Single Quotes nicht kann, der Code Smells verwendet, oder der sonstige Schweinereien betreibt, von denen hier mehrfach in unterschiedlichen Themen bereits (gut begründet!!!) abgeraten wurde. Außerdem werden ähnliche oder gleiche Sachverhalte immer und immer durchgekaut. Sorry, aber da macht das Helfen langsam keinen Spaß mehr!
            Dafür kann der einzelne User doch nichts.
            Erwartest du von jedem neuen User, dass er sich erst x Threads durchliest um die gängigen Anfängerfehler zu erkennen?

            Es wird immer so sein, dass manche Themen sich wiederholen. Wie solls auch anders sein, man kann nicht einfach einen Dump mit Fachwissen in ein Gehirn hochladen. Oder anders: beim Programmieren spielt Erfahrung eine große Rolle.
            Deshalb werden Anfänger auch immer wieder gewisse Fehler machen und wegen dieser Fehler in einem Forum nachfragen, auch wenn es den Fehler schon 234 mal im Forum hab. Der Anfänger müsste erstmal erkennen, dass es die selben Fehler schon im Forum gibt, aber meisten treten die gleichen Fehler in unterschiedlicher Form auf und die Anfänger haben nicht die Erfahrung das zu erkennen.

            tl;dr: Wenn du keinen Spaß mehr am Helfen hast, lass es halt. Einem neuen Mitglied im Forum so einen Text an den Kopf zu werfen bringt nichts. Ich weiß gar nicht was du da erwartest.
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Zitat von VPh Beitrag anzeigen

              Dafür kann der einzelne User doch nichts.
              Erwartest du von jedem neuen User, dass er sich erst x Threads durchliest um die gängigen Anfängerfehler zu erkennen?

              Es wird immer so sein, dass manche Themen sich wiederholen. Wie solls auch anders sein, man kann nicht einfach einen Dump mit Fachwissen in ein Gehirn hochladen. Oder anders: beim Programmieren spielt Erfahrung eine große Rolle.
              Deshalb werden Anfänger auch immer wieder gewisse Fehler machen und wegen dieser Fehler in einem Forum nachfragen, auch wenn es den Fehler schon 234 mal im Forum hab. Der Anfänger müsste erstmal erkennen, dass es die selben Fehler schon im Forum gibt, aber meisten treten die gleichen Fehler in unterschiedlicher Form auf und die Anfänger haben nicht die Erfahrung das zu erkennen.

              tl;dr: Wenn du keinen Spaß mehr am Helfen hast, lass es halt. Einem neuen Mitglied im Forum so einen Text an den Kopf zu werfen bringt nichts. Ich weiß gar nicht was du da erwartest.
              Ok stimmt, aus der Sicht habe ich das noch nicht gesehen. Wahrscheinlich mache ich das auch schon zu lange, um mich selbst nicht mehr in die Lage eines Anfängers versetzen zu können. Also, sorry dafür!

              Kommentar

              Lädt...
              X