PHP MYSQL BASIC Frage..

item: Report Error All
Als erstes ergänzen wir unseren Code mal um die folgende Zeile um uns alle Fehlermeldungen auszugeben.
PHP:
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysql_connect('localhost', 'root', '') or die  ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db('testdb') or die  ("Keine Verbindung möglich: ".mysql_error());

item: Query-String ausgeben
Führte der erste Schritt noch nicht zu einem Resultat, so können wir noch den generierten Query-String testen.
Dazu geben wir diesen mittels echo() aus (Nicht das Result von mysql_query, sondern den zusammengesetzten Query-String). Zudem versuchen wir noch die Fehlermeldung herauszukriegen. Wir erweitern also das mysql_query() um die Errorausgabe mysql_error() .

PHP:
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysql_connect('localhost', 'root', '') or die  ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db('testdb') or die  ("Keine Verbindung möglich: ".mysql_error());

$value = 'test';
$where = 15;
$sql  = "UPDATE myTable SET feld1 = {$value}  WHERE id = {$where};";
echo "{$sql}<br />\n";
mysql_query($sql) or die(mysql_error());


item: Genau die 2 oben genannten Schritte musst du nun machen um uns Fehlermeldungen zu liefern mit denen wir dir helfen können. Wie bereits geschrieben. Dein Script sieht auf ANhieb richtig aus. Wir brauchen nun detailliertere Fehlermeldungen um das Problem zu finden.
'Geht nicht' reicht nicht
 
fehlermeldung:
Eintrag erfolgreich
PHP Error Message

Eintrag erfolgreichYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a8479005/public_html/myBLOG/ADMIN/edit.php on line 37

PHP:
<?php 

	if(isset($_POST['submit'])){
$id = $_GET['id'];	
$titel = $_POST['titel'];
$kategorie = $_POST['kategorie'];
$content = $_POST['content'];
$datum = $_POST['datum'];
$update = "UPDATE myBLOG SET titel='$titel', kategorie='$kategorie', content='$content' WHERE id = '$id'";
$updaten = mysql_query($update); 


if (!$updaten) 
echo "Fehler aufgetreten!"; 
else 
      { 
        echo "Eintrag erfolgreich"; 

}
	

	}

$sql = mysql_query("SELECT * FROM myBLOG WHERE id = ".$_GET['id']);  
while($row = mysql_fetch_array($sql)){
$id = $row['id'];
$titel = $row['titel'];
$content = $row['content'];
$kategorie = $row['kategorie'];
$datum = $row['datum'];

	
?>

<form action='edit.php' method='post'>
<input type="hidden" name="id" value="<? echo $id; ?>">
Titel<br /> <input name='titel' type='text'  value="<? echo $titel; ?>" /><br /><br />
Kategorie<br /> <input  name='kategorie' type='text'   value="<? echo $kategorie; ?>"/><br/><br /> 
Datuml<br /> <input  disabled name='datum' type='text'  value="<? echo $datum; ?>" /><br /><br />
Content<br /> <textarea name='content'  value="<? echo $content; ?>" /></textarea ><br /><br /> 

<input type='submit' name='submit' value='update' />
</form>
<br>

<?php 
}
?>
 
Zuletzt bearbeitet:
Der Fehler ist nicht beim UPDATE, sondern beim SEELCT weiter unten
PHP:
$sql = mysql_query("SELECT * FROM myBLOG WHERE id = ".$_GET['id']);  
while($row = mysql_fetch_array($sql))

Gut, ich schreibe zwar immer, dass id ein numerisches Feld sei. Ist dem So? Was für ein Feldtyp hat die id in der Datenbank?
 
Und wurde der Update auf die Daten durchgeführt?
Und wie sieht das generierte SQL aus (Sorry, diese Frage stelle ich erst etwa zum dritten mal)?

Auch an dieser Stelle (also die Datenauswahl nach dem Update) am Besten mal gemäss Debug-Tutorial durcharbeiten um den Fehler zu finden. Das Tutorial kennst du ja mittlerweile
 
Und wurde der Update auf die Daten durchgeführt?
// Nein werden sie leider nicht

Und wie sieht das generierte SQL aus (Sorry, diese Frage stelle ich erst etwa zum dritten mal)?
// ich weiss nicht was du damit meinst?
 
Update:
Komisch. Dein Script besagt, dass es ausgeführt wurde. Währe interessant zu wissen was für ein SQL das ausgeführt wurde.

Ich habe dir einmal ein Link gesetzt zu einem Tutorial. Dann hab ich den Link nochmals in einem Zitat von meinem Beitrag drin. Zudem habe ich dir in diesem Thread das halbe Tutorial hineinkopiert (aber auch davon hast du höchstens die Hälfte umgesetzt). Des weiteren ist der Link in meiner Signatur. Hättest du das Tutorial einmal durchgelesen und mit deinem Code durchgespielt, dann wüsstest du ganz genau was ich meine mit dem generierten SQL.
Aber du wartest lieber bis jemand mit Blindraten dein Problem löst.
Ich verweise nicht auf das Tutorial, weil ich es so geil finde es zu verlinken. Ich verweise die ganze Zeit darauf, weil es eine Anleitung ist genau solche Probleme, wie sie bei dir im Code auftauchen, aufzuspüren. Das ist ein wichtiger Bestandteil den wir dir wirklich nicht abnehmen können, da wir dein Code nicht testen können. Aber mit den Erkenntnissen aus diesen Arbeitsschritten kann man gezielter das Problem suchen.

Also bitte ich dich nochmals, hilf uns dir zu helfen. Ansonsten - es kann unmöglich mein Problem sein


PHP MySQL Debug Queries
 
Zurück