nefunkční databáze
Dobrý den mám problém s databází. Na mém webu mam problém s košíkem. Nemohu do něj přidávat, odebírat a upravovat položky. Tyto funkce však na mém počítači fungovaly bez problému.
můj web je: http://www.softballshop.store/index.php
17 Answers
Dobrý den,
používáte vlastní kód, nebo nějaký redakční systém? Pozorujete při pokusu o zápis do databáze nějaké konkrétní chybové hlášky? Máte správně zadané údaje databáze (server, uživatel, heslo), včetně správné volby uživatele (některé akce může provádět jenom administrátor, ale ne web). Více informací o databázích najdete na tomto odkazu.
Databáze mi žádné chybné hlášky nehází. Problém je v tom že když chci nahrát něco na databázi tak se většinou nic nenahraje. Přihlašovací údaje jsou jinak v pořádku
Můžete poslat konkrétní kus kódu, kterým se k databázi připojujete a něco přes něj nahráváte?
Můžete zkusit vložit kód znovu, ale v textové podobě, aby jej editor kódu vypisoval bez HTML? V této podobě je obtížně čitelný. Uveďte prosím také nastavenou hodnotu $host, ostatní můžete nechat skryté.
ano omlouvám se
třída na připojení k databázi
<?php
class Database{
private $host = „“;
private $db_name = „“;
private $username = „“;
private $password = „“;
public $conn;
public function getConnection(){
$this->conn = null;
try{
$this->conn = new PDO(„mysql:host=“ . $this->host . „;dbname=“ . $this->db_name, $this->username, $this->password);
}catch(PDOException $exception){
echo „Connection error: “ . $exception->getMessage();
}
return $this->conn;
}
}
?>
vytvoření položky v databázi
function update(){
// query to insert cart item record
$query = „UPDATE “ . $this->table_name . “
SET quantity=:quantity
WHERE product_id=:product_id AND user_id=:user_id“;
// prepare query statement
$stmt = $this->conn->prepare($query);
// sanitize
$this->quantity=htmlspecialchars(strip_tags($this->quantity));
$this->product_id=htmlspecialchars(strip_tags($this->product_id));
$this->user_id=htmlspecialchars(strip_tags($this->user_id));
// bind values
$stmt->bindParam(„:quantity“, $this->quantity);
$stmt->bindParam(„:product_id“, $this->product_id);
$stmt->bindParam(„:user_id“, $this->user_id);
// execute query
if($stmt->execute()){
return true;
}
return false;
}
Kód vypadá standardně, předpokládám, že nesprávné „české“ uvozovky do něj vložil náš editor.
Do $host zadáváte adresu databázového serveru? Uživatelé tu často nechávají hodnotu localhost, která nefunguje, proto se na ni ptám.
Zkuste si stranou v samostatném souboru založit testovací skript a ověřte:
- Jestli při nefunkčním spojení s databází správně vypisuje chybu.
- Jestli dokáže tabulku updatnout statickými hodnotami (např 1 rohlík Pepa).
Tím byste se měl dobrat k jádru problému – zda selhává spojení a jenom o tom nevíte, nebo jestli je problém se samotným updatem, případně předáváním hodnot.
Chtěl bch se ještě na něco zeptat nemohlo by to být rozdílnou verzí sql?