Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL: UPDATE päivittää väärin

joah [22.02.2014 16:12:34]

#

Moi, taas uusi ongelma, edellinen jo ratkesi.

Mikä tässä on vikana?

Tallentaja (update_frontpage.php):

<?php
try {
    $yhteys = new PDO("mysql:host=MYSQL-PALVELIN;dbname=TIETOKANNAN-NIMI", "TIETOKANNAN-KÄYTTÄJÄNIMI", "TIETOKANNAN-SALASANA");
} catch (PDOException $e) {
    header("Location: dashboard.php?error=1"); // Uudelleenohjataan käyttäjä sivulle, jossa sanotaan, että tietokantaan yhdistämisessä tapahtui virhe.
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$yhteys->exec("SET NAMES utf8"); // PDOn yhteydenmuodostus näytetään vain tässä, koska jos se on tästä kiinni. Ja oikesti tiedosto sijaitsee tiedostossa "mysql_conn.php"

$kysely = $yhteys->prepare("UPDATE frontpage SET title = ? AND content = ?");
$kysely->execute(array(htmlspecialchars($_POST['title']), htmlspecialchars($_POST['content'])));
header("Location: dashboard.php?done=1"); // Ohjataan käyttäjä sivulle, joka kertoo, että sisältö on vaihdettu
?>

Formi (dashboard.php):

<?php
include("mysql_conn.php"); // Tiedoston sisältö on PDOohon yhteydenmuodostus, katso edellisestä.
$frontpage_pdo = $yhteys->prepare("SELECT * FROM frontpage");
$frontpage_pdo->execute();
$row = $fronpage_pdo->fetch();
?>
<form action="update_frontpage.php" method="post">
Otsikko: <input type="text" value="<?php echo $row['title']; ?>" name="title"><br />
Sisältö: <textarea name="content"><?php echo nl2br($row['content']); ?></textarea><br />
<input type="submit" value="Päivitä">
</form>

Tietokannassa on vain yksi rivi, jota päivitetään koko ajan. Kun lomake lähetetään, pitäisi uusi teksti vaihtaa vanhan tekstin tilalle. Näin olen kuvitellut, että niin se toimisi. Tässä vielä tietokannasta teksitmuotoinen kuva:

   title   |   content
-------------------------
  Otsikko! |  Moi, hei!

Kun käyttäjä lähettää vaikka titleksi "heippa" ja contentiksi "tirppa" muuttuu taulu näin:

   title   |   content
-------------------------
      0    |  Moi, hei!

Eli title muuttuu nollaksi ja content ei muutu. Missä vika?

Antti Laaksonen [22.02.2014 16:49:54]

#

Muuta kysely

UPDATE frontpage SET title = ? AND content = ?

muotoon

UPDATE frontpage SET title = ?, content = ?

niin pitäisi toimia.

Tällä hetkellä MySQL tulkitsee tuon jotenkin oudosti AND-operaationa.

joah [22.02.2014 17:52:43]

#

Okei, kiitos!

p99o [22.02.2014 18:36:34]

#

muistan kun itsellä oli sama pilkku-ongelma WHERE-ehdoissa joskus :P

qeijo [26.02.2014 12:56:44]

#

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta