• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niezamierzone podwójne wykonanie zapytania.

0 głosów
413 wizyt
pytanie zadane 18 sierpnia 2016 w PHP przez Kacper Duda Obywatel (1,970 p.)

Witam,

W php mam taki kod:

$pdo = new PDO('mysql:host='.ConnectInformation::get("host").';dbname='.ConnectInformation::get("db_name"), ConnectInformation::get("db_user"), ConnectInformation::get("password"));
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo -> query ('SET NAMES utf8');

$stmt = $pdo -> prepare($SQL);
$stmt -> execute($prepare);

A zmienne wyglądają tak:

$SQL = INSERT INTO autologin (userid, code) VALUES (:userid, :code)

$prepare = Array ( [:userid] => 5 [:code] => powtarzające się zapytania )

Mam pewność, że ten kod wykonuje się TYLKO RAZ, ale po wykonaniu tego zapytania (nie wyskaktuje błąd, ale) zostają wstawiane DWA wiersze i nie mam pojęcia czemu.

Jak ktoś zna rozwiązanie to proszę pisać.

 

komentarz 18 sierpnia 2016 przez Kacper Duda Obywatel (1,970 p.)
Klasa ConnectInformations odpowiada jedynie za podawanie danych.
komentarz 18 sierpnia 2016 przez Surykat Stary wyjadacz (14,780 p.)

Co zabawne, założyłeś 2x taki sam temat. ;)

komentarz 18 sierpnia 2016 przez Vento Pasjonat (17,120 p.)
Spróbuj zrobić oddzielny plik php i wykonać, to samo zapytanie tylko na statycznych zmiennych i zobacz czy też wstawia Ci dwa wiersze - jeżeli tak, to znaczy, że kod wykonuje się podwójnie.
komentarz 18 sierpnia 2016 przez Kacper Duda Obywatel (1,970 p.)
Zrobiłęm tak jak mówisz i nadal podwójnie się wstawia, a NIE jest to możliwe, że się kod podwójnie odtwarza.
komentarz 18 sierpnia 2016 przez Kacper Duda Obywatel (1,970 p.)

Powiedz mi jak ten kod (nie jest nigdzie podpięty) działa wciąć podwójnie !

$SQL = 'INSERT INTO autologin (userid, code) VALUES (:userid, :code)';
	$prepare = array(":userid" => 5, ":code" => "powtarzające się zapytania");

	$pdo = new PDO('mysql:host='."localhost".';dbname='."kunszt", "root", "");
	$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$pdo -> query ('SET NAMES utf8');

	$stmt = $pdo -> prepare($SQL);
	$stmt -> execute($prepare);

 

komentarz 18 sierpnia 2016 przez Vento Pasjonat (17,120 p.)

To chyba jakiś cud, bo u mnie wszystko działa w porządku.

Kod:

<?php

$SQL = 'INSERT INTO tabela (userid, code) VALUES (:userid, :code)';
try
{
     $prepare = array(":userid" => 5, ":code" => "powtarzające się zapytania");
    $pdo = new PDO('mysql:host='."localhost".';dbname='."test", "root", "pawel");
    $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo -> query ('SET NAMES utf8');
 
    $stmt = $pdo -> prepare($SQL);
    $stmt -> execute($prepare);
   
}
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
?>

Struktura bazy:

 

Zmieniłem nazwe tabeli i nazwe bazy danych przy łączeniu, więc zmień z powrotem na Twoje.

komentarz 18 sierpnia 2016 przez Kacper Duda Obywatel (1,970 p.)
Zrobiłem identycznie jak ty (zmieniłem tylko dane łączenia i nazwę bazy).

Nadal dwukrotnie wstawia się ... może przesłać na serwer i spróbować tam ?
komentarz 18 sierpnia 2016 przez Kacper Duda Obywatel (1,970 p.)
OK jest. Okazało się, że to mój XAMPP nie działa dobrze - na serwerze w necie jest ok :D

Muszę przeinstalować XAMPP'a.

Napisz Odpowiedź - dam ci naj :D.

1 odpowiedź

0 głosów
odpowiedź 18 sierpnia 2016 przez Vento Pasjonat (17,120 p.)
wybrane 18 sierpnia 2016 przez Kacper Duda
 
Najlepsza

To chyba jakiś cud, bo u mnie wszystko działa w porządku.

Kod:

<?php
 
$SQL = 'INSERT INTO tabela (userid, code) VALUES (:userid, :code)';
try
{
     $prepare = array(":userid" => 5, ":code" => "powtarzające się zapytania");
    $pdo = new PDO('mysql:host='."localhost".';dbname='."test", "root", "pawel");
    $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo -> query ('SET NAMES utf8');
  
    $stmt = $pdo -> prepare($SQL);
    $stmt -> execute($prepare);
    
}
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
?>

Struktura bazy:

 

Zmieniłem nazwe tabeli i nazwe bazy danych przy łączeniu, więc zmień z powrotem na Twoje.

Podobne pytania

0 głosów
1 odpowiedź 730 wizyt
pytanie zadane 1 marca 2016 w Ogłoszenia, zlecenia przez Wajstachy Użytkownik (960 p.)
0 głosów
2 odpowiedzi 454 wizyt
pytanie zadane 1 stycznia 2023 w PHP przez dee Początkujący (360 p.)
0 głosów
1 odpowiedź 633 wizyt
pytanie zadane 27 maja 2022 w PHP przez kingkushlee Gaduła (3,960 p.)

93,695 zapytań

142,612 odpowiedzi

323,223 komentarzy

63,224 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...