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

Niezamierzone podwójne wykonanie zapytania.

Hosting forpsi easy 1 pln
0 głosów
160 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,760 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ź 617 wizyt
pytanie zadane 1 marca 2016 w Ogłoszenia, zlecenia przez Wajstachy Użytkownik (960 p.)
0 głosów
2 odpowiedzi 102 wizyt
pytanie zadane 1 stycznia w PHP przez dee Początkujący (360 p.)
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 27 maja 2022 w PHP przez kingkushlee Gaduła (3,960 p.)

92,081 zapytań

140,736 odpowiedzi

317,696 komentarzy

61,401 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -50% (w dniach 24.11 - 29.11 z okazji Black Friday, a potem będzie to -30%) na bilety w wersji "Standard"! Więcej informacji na temat akademii znajdziecie tutaj. Dziękujemy Sekurakowi za tak fajną zniżkę dla Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 15% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...