Pokaż wyniki od 1 do 4 z 4
Like Tree2Likes
  • 1 Post By Aravorn
  • 1 Post By Klaus Korner

Wątek: SELECT @@IDENTITY poprzez PDO

  1. #1
    Aktywny
    Dołączył
    Jul 2008
    Posty
    866

    Domyślnie SELECT @@IDENTITY poprzez PDO

    Ma ktoś jakiś sprawdzony sposób przy używaniu @@IDENTITY w PDO? W żaden sposób nie udaje mi się dobrać do tej wartości poprzez php w jednym zapytaniu..

    Kod php:
            $sql NULL;
            
    $sql $pdo->prepare('INSERT INTO `fight_reports`
                                  (`journey_id`)
                                  VALUES (2);
                                  SELECT @@IDENTITY AS `newid`;
                                '
    );
            
    $sql->execute(); 
    Banalnie proste, poprzez phpmyadmin pieknie działa..
    http://s24.postimg.org/ihga4lmed/selectidentity.png

    Jednak w php nie jestem w stanie zdobyć tej wartości..
    Kod php:
    $r $sql->execute();
    echo 
    $r//1 
    Kod php:
    $r $sql->fetch(); //Warning: PDOStatement::fetch(): SQLSTATE[HY000]: General error in ... on line 182 
    Kod php:
    $r $sql->nextRowset();
    echo 
    $r//1 

    Jedyne co znalazłem to coś takiego:
    http://stackoverflow.com/questions/1...ty-not-working
    Po pierwsze z dodatkowym zapytaniem to nie jest problem wymyślić.. A po drugie obawiam się, że używanie tego przy wielu jednoczesnych połączeniach może powodować błędy, ponieważ jest to już inne połączenie..

  2. #2
    Programista Awatar Aravorn
    Dołączył
    Apr 2011
    Posty
    343

    Domyślnie

    Nie korzystałem z tego, ale czy to nie działa tak, że zwraca id ostatniego rekordu w tabeli? (po unikalnym kluczu). Jeżeli tak, do do wstawiania, czyli jak miałeś na przykładzie wyżej, masz takie coś: http://php.net/manual/en/pdo.lastinsertid.php.
    Co do multizapytań trzeba jakąś jedną lub dwie dodatkowe flagi włączyć - osobiście nie korzystam z tego również na PDO, więc ciężko mi powiedzieć
    Drikam likes this.

  3. #3
    Aktywny
    Dołączył
    Jul 2008
    Posty
    866

    Domyślnie

    Kod php:
        $pdo->beginTransaction();

        
    $pdo->query(' ... ');
        
    $pdo->query(' ... ');
        
    $pdo->query(' ... ');

        
    $pdo->commit(); 
    Właśnie znalazłem coś takiego, ale nie sprawdzałem, zresztą nie wiem jak to się ma do szybkości.. Nie mam metody lastInsertId. Dałem sobie 2 zapytania i zabrałem za ważniejsze rzeczy.
    Ostatnio edytowane przez Drikam ; 16-09-2013 o 20:34

  4. #4
    Programista
    Dołączył
    Sep 2007
    Posty
    622

    Domyślnie

    PHP nie pozwala na wykonywanie dwóch zapytań w ramach jednego query(). A to w takim celu, żebyś sobie przy SQL Injection nie mógł zrobić z SELECT'a INERTa

    http://www.php.net/manual/en/pdo.lastinsertid.php

    Zdecydowanie lepiej użyć tego czegoś Poza tym wywołanie dwóch zapytań zaraz po sobie też powinno działać:
    Kod php:
        $pdo->exec('INSERT INTO `fight_reports` SET `journey_id` = 2');
        
    $lastId $pdo->query('SELECT @@IDENTITY')->fetchColumn(); 
    Drikam likes this.
    http://orodlin.pl/ - Orodlin.pl Team Member
    http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
    http://wsosnowski.pl - wizytówka

    Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. Drift mania zlecenie. zapłata poprzez sms
    Przez ChoseOne w dziale Kosz
    Odpowiedzi: 5
    Ostatni post / autor: 16-01-2013, 15:14
  2. Odpowiedzi: 0
    Ostatni post / autor: 10-05-2011, 10:13
  3. Vallheru v. 1.09 Pomoc !! Regeneracja Energi poprzez jedzenie!!
    Przez Nie zarejestrowany w dziale Support Vallheru
    Odpowiedzi: 11
    Ostatni post / autor: 08-10-2009, 17:15
  4. [php/mysql] Wy??wietlenie danych poprzez pętle
    Przez wolny w dziale PHP / MySql
    Odpowiedzi: 11
    Ostatni post / autor: 02-04-2008, 20:55
  5. Import plików sql poprzez phpMyAdmina
    Przez htmlxp w dziale Dyskusje
    Odpowiedzi: 0
    Ostatni post / autor: 16-10-2007, 21:35

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •