Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:24.4.2018 0:47

$sql = "UPDATE host SET rok=$rok WHERE id=$id";
if ($conn->query($sql) === TRUE) {
echo " Nastala zmena na rok .$rok. ";
} else {
echo "Niečo sa pokazilo " . $conn->error;
}
$conn->close();

KDE jE problem, v php mi to stale vyhadzuje nastala zmena... aj ked id nie je

Odpovědět
24.4.2018 0:47
Neaktivní uživatelský účet
Avatar
Pavol Hejný
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Pavol Hejný:24.4.2018 1:08

PDO query vrací objekt PDOStatement, který se vyhodnotí jako true, pokud SQL dotaz prošel (bez ohledu na to, zda to nějaké řádky ovlivnilo).

http://php.net/…do.query.php

zkus to pozměnit takto:

$sql = "UPDATE host SET rok=:rok WHERE id=:id";
$query = $conn->prepare(sql);
$query ->bindParam(':rok', $rok);
$query ->bindParam(':id', $id);
$query->execute();
if ( $query->rowCount()) {
echo " Nastala zmena na rok .$rok. ";
} else {
echo "Niečo sa pokazilo " . $conn->error;
}
$conn->close();

PS: Do toho SQL ty hodnoty vkládej jako parametry prepared statementu. Pokud bys to totiž vkládal přímo, můžeš lehce vytvořit nebezpečnou bezpečnostní díru. Viz. můj článek:
https://www.itnetwork.cz/…vou-aplikaci

Nahoru Odpovědět
24.4.2018 1:08
/^(web )?(app )?developer$/
Avatar
Neaktivní uživatel:24.4.2018 1:59

nefunguje..

Nahoru Odpovědět
24.4.2018 1:59
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.4.2018 7:52

Viz Hejny, pokud je sql dotaz spravne, tak, at uz smaze radek nebo je 0 smazanych, je to true. A jedinou moznosti je zjistit to pres rowCount. Jestli jeho kod nefunguje, mame tu google, muzes najit 1000 dalsich kodu s pouzitim rowCount.
Ja pouzivam kod, ktery vypada asi takhle. Netusim, zda nekde resim i rowCount.

$conn = new PDO(...);
$sth = $conn->prepare($query);
...
$sth_exec = $sth->execute();
if (!$sth_exec)
        {
        if (!$sth) {echo 'Not sth!';}
        echo 'Error query: ' . $sth->errorCode().' '.implode(" - ",$sth->errorInfo());
        }

Tak jo, nasel jsem cas kodu i s rowCount. Mam to ale obalene v class. $sql->query mi returnuje $sth. Viz poskladani z predchoziho kodu, ktery jsem upravoval z te me class $sql.

$query  = $sql->createDelete($tbl,$data_delete);
$result = $sql->query($query);
if ($sql->sth_exec && $result->rowCount()>0)
        {echo "Smazano ".$result->rowCount()."radku";}
else    {echo "Error sth nebo smazano 0";}
 
Nahoru Odpovědět
24.4.2018 7:52
Avatar
Roman Havránek:24.4.2018 9:50

Ahoj,

mám takto jednoduchou úlohu vyřešenou pomocí PDO a OOP.

Zde je jednoduchý zdroják:

public function zaplat($id)
{
        $dotaz = $this->spojeni->prepare("UPDATE `prihlasky` SET `platba` = 'Ano' WHERE `prihlasky`.`id`= '$id' LIMIT 1 ");
        $dotaz->execute();
  if ($dotaz)
      {
        echo ("<h1> <center> <span style=color:green>Úspěšně jsi zaplatil");
        echo ("<br> Budeš přesměrován<h1> <center>");
        header("Refresh: 2; url=../admin/index.php");
      }
}

Musíš mít v dotazu, že bude limitován pro 1.
Snad jsem ti pomohl ! :) ;)

Nahoru Odpovědět
24.4.2018 9:50
sleep();
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.