db Update oder insert

hups1803

Erfahrenes Mitglied
Hallo,
ich wolte folgendes machen,

wenn ein datenbank eintrag mit der Image_id vorhanden ist :Updaten sonst eintragen.

leider macht er immer beides also Update und Eintrag ,bei meinen code.

Wo mache ich den Fehler ?

PHP:
// abfrage
$sql = "SELECT * FROM ".MPREFIX."notes_image ";
$res2 = mysql_query($sql);
while($row1 = mysql_fetch_array($res2))
{
$neu_image = $row1['image_id'];// image_id



// upadate oder insert
$mysql = new db();
if($neu_image ==''.$image_id.'')

{$sql->db_Update("notes_image","image='".$image."',image_width='".$image_width."',title='".$title."' WHERE image_id='".$image_id."' ");

} else{  

$sql->db_Insert("notes_image", "  '', '$image','$image_id','$image_width','$title'");
} //ende else 
}//ende while

Bitte helft mir Danke
 
Hi,

das sieht nicht nur wegen der Codeformatierung etwas seltsam aus... ;o

Du gehst alle deine Einträge in MPREFIXnotes_image durch, wozu? Du willst doch nur wissen, ob die ID bereits in der Datenbank vorhanden ist. Also suchst du explizit nach dieser ID:

PHP:
$sql = "SELECT * FROM ".MPREFIX."notes_image WHERE image_id = {$image_id}";
$query = mysql_query($sql);

if (mysql_num_rows($query) > 0) {
  // ID ist vorhanden, update
} else {
  // ID ist nicht vorhanden, insert
}

Best regards
 
Dazu gibts ein SQL-Befehl in MySQL:
SQL:
INSERT ... INTO tbl_name (col_name,...)
VALUES (expr,...)
ON DUPLICATE KEY UPDATE col_name=expr, ...
 
Zuletzt bearbeitet von einem Moderator:
aso kannste mir bitte noch sagen wie der code aussieht wenn nicht die id verglichen wird sondern ein anderes feld zb name

Danke
 
Ich habe da einige schöne vorbereiteten Texte für dich *g*
Ich möchte dich bitten, in deinen nächsten Posts die Groß- und Kleinschreibung zu beachten. Danke!
Ich möchte dich bitten, in deinen nächsten Posts Satzzeichen korrekt zu verwenden. Danke!

So, zum Thema.
Ist der Name der Key? Sollte eigentlich, wenn darauf keine Duplikate erlaubt sind.
 
Dann musst du auf die Methode von Tim zurückgreiffen oder das Feld als PrimaryKey definieren

Nachtrag:
Habs grad getestet. Es reicht wenn du das Feld `name` mit einem UNIQUE-Index bestückst

SQL:
--Einmal ausführen um den Index anzulegen
ALTER TABLE `deine_Tabelle`  
ADD UNIQUE INDEX `IDX_UNIQUE_NAME` (`name`);
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

danke für deine hilfe aber irgenwie funktioniert das alles nicht .

ich rufe den Uploader so auf uploader.php?id=1

dann habe ich in der Uploader PHP :

PHP:
if (isset($_GET['id'])) {
$id = intval($_GET['id']);

$text ='
<form id="imageForm" name="select" enctype="multipart/form-data"
          action="upload/uploadImage.php" method="POST" target="uploadedImage">
	<input type="hidden" value="'.$id.'" name="image_id">';
</form>
}

verkürzt Dargestellt.

damit Übergebe ich die id als image_id an den uploader

PHP:
$sql = "SELECT * FROM ".MPREFIX."notes_image WHERE image_id = {$image_id}";
$query = mysql_query($sql);//Abfrage ist vorhanden?

if (mysql_num_rows($query) >= 0) {
	$sql = new db();	
  $sql->db_Update("notes_image","image='".$_FILES[$fileFieldName]["name"]."',image_width='".$image_width."',title='".$title."' WHERE image_id='".$image_id."' ");// ID ist vorhanden, update
} else {
	$sql = new db();	
  $sql->db_Insert("notes_image", "  '', '$sourceImagePath','$image_id','$image_width','$title'");// ID ist nicht vorhanden, insert
}


das feld image_id in der Datenbank ist Int 11 null nein default 0

nur leider trägt er weder was ein noch update er.

nur wenn ich manuell einen Eintrag eingebe kann ich diesen updaten.

Ich finde leider den fehler nicht .

Einer von euch vieleicht
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück