Stephan: Datenbank ändern

Hi,

also mein Prob von gestern abend habe ich jetzt gelöst (DB muss man verbinden ;-) )

Jetzt habe ich ein neues (anderes):

Ich übergebe Werte, die auch bei echo korrekt angezeigt werden. DIese werden aber nicht in die Datenbank eingetragen. Ich bekomme aber auch keine Fehler...

Woran kann das liegen?

Danke schonmal

Stephan

PS:

Code:

<?php
$text = mysql_escape_string($text);
$titel = mysql_escape_string($titel);
$img = mysql_escape_string($img);
$id = mysql_escape_string($id);

echo " $text $titel $img $id";
 $db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
    @mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");
$query = "UPDATE news SET titel = '$titel', text = '$text', img = '$img' WHERE id = 'id'";

if($insert = @mysql_query("$query")) {
echo '<p align="center">Der Eintrag wurde erfolgreich geändert!<br><br><a href="index.php"><- zurück</a></p>';
echo mysql_error();

}else{
echo '<p align="center">Leider konnte der Eintrag nicht geändert werden. Bitte versuchen Sie es später noch einmal.<br><br><a href="index.php"><- zurück</a><br><br> </p>';
echo mysql_error();
}

?>

  1. Hi,

    bist du dir sicher, dass du keinen Fehler bekommst?

    if($insert = @mysql_query("$query")) {
    echo '<p align="center">Der Eintrag wurde erfolgreich geändert!<br><br><a href="index.php"><- zurück</a></p>';
    echo mysql_error();
    }else{
    echo '<p align="center">Leider konnte der Eintrag nicht geändert werden. Bitte versuchen Sie es später noch einmal.<br><br><a href="index.php"><- zurück</a><br><br> </p>';
    echo mysql_error();
    }

    Du hast dort in HTML stehen
    <- zurück
    oder anders gesprochen, du hast gerade ein Tag - eingeführt (oder es zumindest versucht). Da du dieses Tag aber nirgends schließt, wird auch der nachfolgende Inhalt, also ein eventuelles mysql_error gar nicht angezeigt, sondern vom Browser als Quelltext verschluckt. Korrekt müsste es heißen
    <- zurück

    Ansonsten hilft auch imer wieder
    echo $query;
    und das dann mal von Hand in PHPMyAdmin oder so gegen die Datenbank feuern und gucken ob's dann klappt.

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hi,

      keine Änderung bei dem <-...

      Ansonsten hilft auch imer wieder
      echo $query;
      und das dann mal von Hand in PHPMyAdmin oder so gegen die Datenbank feuern und gucken ob's dann klappt.

      Wei mit Hand... :-?

      Danke schonmal

      Stephan

  2. Hallo,

    Woran kann das liegen?

    Ohne die _richtige_ Query zu sehen kann man nur Glaskugeln.
    Und das macht mir gerade keinen Spass.

    Lass Dir mal die Query anzeigen, unmittelbar bevor Du
    sie an die Datenbank uebergibst:

    echo $query;

    Wenn Du dann immer noch keinen Fehler siehst, poste hier die Query.

    Im "Erfolgsfall" kannst Du ja auch schauen, wieviele Reihen
    betroffen waren von dem UPDATE:
    http://www.php.net/manual/de/function.mysql-affected-rows.php

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Hi, er gibt das aus:

      UPDATE news SET titel = 'Test', text = 'Testttadsasdasd', img = 'Google' WHERE id = 'id'

      Also wird die ID nicht übergeben, warum nicht, das sieht so aus:

      error_reporting(E_ALL);

      if(isset($_GET['article'])) { // guckt nach ob 'xy' übergeben wurde

      include ("config.inc.php");

      $db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
      @mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");
      $sql = "SELECT * FROM news WHERE id = '$article'";
      $result = mysql_query($sql,$db);
      while ($row = mysql_fetch_array($result)) {
         $titel = $row['titel'];
         $img = $row['img'];
         $id = $row['id'];
         $text = $row['text'];

      Danke schonmal

      Stephan

      1. Hallo,

        Kein Wunder, wenn Du das so befiehlst:
        $query = "UPDATE [...] WHERE id = 'id'";
        wuerde ich das auch so ausgeben...

        UPDATE [...] WHERE id = 'id'

        Wenn der Wert eine Zahl sein soll, solltest Du
        uebrigens die Anfuehrungszeichen weglassen.

        UPDATE [...] WHERE id = 55

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
  3. Moin,

    $query = "UPDATE news SET titel = '$titel', text = '$text', img = '$img' WHERE id = 'id'";

    Versuch es mal so:

    $query = "UPDATE news SET titel = ".$titel.", text = ".$text"., img = ".$img." WHERE id = ."id." ";

    Beachte die Hochkommatas. Was gibt ein  echo mysql_affected_rows(); ?

    Stefan

  4. Hi!

    $query = "UPDATE news SET titel = '$titel', text = '$text', img = '$img' WHERE id = 'id'";

    Nun,
    Zusammenfassung der anderen Postings:

    1. in der Tat, hier ist auch ein "Fehler" im Query: id = 'id' ist genau das was da steht, du willst aber id = '$id'
    2. Es ist prinzipiell beliebig, ob du id = $id oder id = '$id' bei nummerischen Werten verwendest, unter bestimmten Umständen ist MySQL wohl etwas performanter mit gequoteten Zahlen

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(