Werte in MySQL Tabellen ersetzen

qsrs

Erfahrenes Mitglied
Hallo an alle,

ich möchte Werte in einer von mir über PHP angelegten MySQL-Tabelle schreiben. Ein PHP-Script (Formular) fügt diese Werte in die Tabelle ein. Im Moment fügt das Script jedoch die Werte als neue Zeile pro Spalte hinzu. Wie kann ich die Werte ersetzen, anstatt zu ergänzen?

Das Script zum Anlegen der Tabelle (soweit alles ok):
PHP:
<?php
include("config.php");
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpass);
$create = "$action table $dbtable_prefix$dbtable(Id INT NOT Null AUTO_INCREMENT Primary Key, bgcolor1 char(25), bgcolor2 char(25), bgcolor3 char(25), bgcolor4 char(25), bgcolor5 char(25), alpha1 char(3))";
$delete = "$action table $dbtable_prefix$dbtable";
$info = "Command '$action $dbtable_prefix$dbtable' successful.";
if ($action=="create")
{
mysql_db_query($dbname, $create, $dbconnect);
mysql_close($dbconnect);
}
if ($action=="drop")
{
mysql_db_query($dbname, $delete, $dbconnect);
mysql_close($dbconnect);
}
?>
Das Script zum Einfügen der Werte in die Tabelle (der Knackpunkt):
PHP:
<?php
include("config.php");
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpass);
$query	 = "insert into $dbtable(bgcolor1, bgcolor2, bgcolor3, bgcolor4, bgcolor5, alpha1) values('$bgcolor1', '$bgcolor2', '$bgcolor3', '$bgcolor4', '$bgcolor5', '$alpha1')";
mysql_select_db($dbname, $dbconnect);
mysql_query($query, $dbconnect);
mysql_close($dbconnect);
?>
Ich möchte mich im Voraus für Antworten bedanken.
 
Ein INSERT macht genau das, was es bedeutet: Es FÜGT Zeilen EIN

Wenn du eine bestehende Zeile aktualisieren willst, dann musst du auch genau das tun :)

UPDATE `table` SET `XYZ` = 'nasowas' WHERE ....


shutdown
 
Ok, also per Update.

Leider verstehe ich noch nicht ganz, da ich Anfänger bin, wofür 'XYZ' und 'nasowas' steht. Wie würde denn die folgende Zeile lauten, wenn ich Werte per UPDATE ersetzen möchte:
PHP:
 $query = "INSERT INTO $dbtable(bgcolor1, bgcolor2, bgcolor3, bgcolor4, bgcolor5, alpha1) values('$bgcolor1', '$bgcolor2', '$bgcolor3', '$bgcolor4', '$bgcolor5', '$alpha1')";
Danke für Antworten.
 
PHP:
$query = "UPDATE $dbtable SET bgcolor1='$bgcolor1', bgcolor2='$bgcolor2', bgcolor3='$bgcolor3', bgcolor4='$bgcolor4', bgcolor5='$bgcolor5', alpha1='$alpha1') WHERE ...
Da muss dann die Where Klausel rein, durch die Du den exakten Datensatz ansprechen kannst, den Du ändern willst (siehe dazu auch hier).

redlama
 
Ok, das hat funktioniert. Vielen Dank.

Ich habe jedoch noch eine Frage zur Schreibweise. Du hast die Werte der Spalten nicht mit Hochkomma geschrieben. Wenn ich diese Anfrage direkt über phpMyAdmin ausführe, wird der SQL-Befehl ja nochmal angezeigt. In diesem Fall werden die Spaltenwerte mit Hochkomma ausgegeben und meine Abfrage lautet dann:
PHP:
$query = "
UPDATE `$dbtable` SET `bgcolor1` = '$bgcolor1',
`bgcolor2` = '$bgcolor2',
`bgcolor3` = '$bgcolor3',
`bgcolor4` = '$bgcolor4',
`bgcolor5` = '$bgcolor5',
`alpha1` = '$alpha1' WHERE `Id` = '1' LIMIT 1 ;";
Worin besteht der Unterschied, bzw. was nimmt man als korrekte Schreibweise? Mit oder Hochkomma? Da gibt es sicherlich eine "Goldene Regel". Denn beide Schreibweisen funktionieren. Ich möchte es vermeiden mir etwas anzueignen, was eigentlich falsch bzw. im Coding nicht üblich ist.
 
Ich kenne viele, die es mit Hochkomma schreiben.
Da es aber keine Notwendigkeit ist (zumindest habe ich deswegen noch nie einen Fehler bekommen), verzichte ich auf die Hochkomma.
Aber ich glaube mit Hochkomma sieht man häufiger, es ist also gängiger.

redlama
 
Die Backticks (so heißen die Dinger) sind notwendig, wenn es sich bei deinen Tabellen-/Spaltennamen um reservierte Wörter handelt, damit mySQL auch weiß, dass es sich um einen Tabellen-/Spaltennamen handelt, und nicht um das reservierte Wort.

Es spricht nichts dagegen, immer Backticks zu verwenden, auch wenn sie nicht gebraucht werden. Der Einheitlichkeit halber würde ich die immer benutzen.
 

Neue Beiträge

Zurück