lordkimahri
Goto Top

Problem mit UPDATE by ID, meldung erfolgreich ausgeführt aber dbinhalt wird nicht geändert!

Ich arbeite derzeit an einem kleinem Homeprojekt, was sich wie folgt zusammensetzt:

Anwendung (in Visual Basic programiert) greift auf eine PHP-datei zu die per POST mit Daten gefüttert wird.

Nun habe ich meine Php-Datei wie folgt aufgebaut:
<?php
	require("settings.php");  
	if(isset($_POST["id"]) && isset($_POST["title"]) && isset($_POST["text"])){  
		// Create connection
		$conn = new mysqli($servername, $username, $password, $dbname);
		// Check connection
		if ($conn->connect_error) {
			die("Connection failed: " . $conn->connect_error);  
		}
        $tempid = addslashes($_POST["id"]);		  
		$temptitle = addslashes($_POST["title"]);  
		$temptext = addslashes($_POST["text"]);  
		
		$sqlupdate = "UPDATE news SET title=$temptitle, text=$temptext WHERE id=$tempid";  

$update = mysql_query($sqlupdate);
if ($sqlupdate == TRUE){
	echo "News bearbeitet!";  
		} else {
			echo "Error: " . $sqlupdate . "<br>" . $conn->error;  
		}

		$conn->close();
	}
	else{
		echo "Keine Daten gesetzt.";  
} 
?>
Wenn ich im PHP-Admin den updatebefehl ausführe klapt alles. Über eine PHP-Datei (liegt auf selbem Server) funktioniert das UPDATE nicht!

Alle anderen PHP-Datein funktionieren einwandfrei, habe eine zum erstellen von neuen einträgen oder zum laden von einträgen aus der DB, auch das anzeigen klappt. Ich füge auch den code hinzu ausm VB mit dem ich die variablen übergebe:
private void edit_news_save_Click(object sender, EventArgs e)
        {
            var request = (HttpWebRequest)WebRequest.Create("meine.adresse"); //das meine adresse habe ich nachträglich geändert!  
            var postData = "id=" + edit_news_id.Text;    // txtnewNewsTitle  
                postData += "&title=" + edit_news_title.Text;  
                postData += "&text=" + edit_news_text.Text;  

            var data = Encoding.ASCII.GetBytes(postData);

            request.Method = "POST";  
            request.ContentType = "application/x-www-form-urlencoded";  
            request.ContentLength = data.Length;

            using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            var response = (HttpWebResponse)request.GetResponse();

            var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            // lblStatus.Text = responseString;
            MessageBox.Show(responseString);
Ich hoffe mir kann geholfen werden!
Kommentar vom Moderator Dani am 23.02.2015 um 17:30:47 Uhr
Formatierung hinzugefügt.

Content-ID: 264312

Url: https://administrator.de/contentid/264312

Ausgedruckt am: 23.11.2024 um 03:11 Uhr

Arano
Arano 23.02.2015 aktualisiert um 18:16:36 Uhr
Goto Top
Hi,

schau dir die Zeilen 14, 16 und 17 an.
In der If-Bedingung prüfst du die falsche Variable !

Edit:
Jetzt sehe ich noch, das du die beiden PHP-MySQL-Varianten mischt !
Am Anfang verwendest du die mysqli-Variante und für Ausführen des Queries die veraltete mysql-Variante (ohne i)


~Arano
LordKimahri
LordKimahri 23.02.2015 um 19:00:04 Uhr
Goto Top
Zitat von @Arano:

Hi,

schau dir die Zeilen 14, 16 und 17 an.
In der If-Bedingung prüfst du die falsche Variable !

Edit:
Jetzt sehe ich noch, das du die beiden PHP-MySQL-Varianten mischt !
Am Anfang verwendest du die mysqli-Variante und für Ausführen des Queries die veraltete mysql-Variante (ohne i)


~Arano

Könntest du mir evtl das script berichtigen, bin derzeit Krank und nicht ganz aufnahmefähig. Wäre echt genial, und andere User mit dem selben Problem hätten sofort nen vergleich mit lösungsansatz!
Arano
Lösung Arano 23.02.2015 aktualisiert um 20:35:07 Uhr
Goto Top
Öhm ... wie meinst du das: "...bist krank und nicht ganz aufnahmefähig..." du hast dich doch eben noch selber mit diesem Problem befasst und diesen Beitrag erstellt !

Hier, gleich der rote Kaste auf der Seite: http://de2.php.net/manual/en/function.mysql-query.php
Und als Alternative (s. roter Kasten im ersten Link): http://de2.php.net/manual/en/book.mysqli.php

Zeile 16 und 17 sollten wiefolgt lauten:
$update = @mysqli_query($conn, $sqlupdate);
if ($update === TRUE){ 
das ist zumindest was ich gemeint habe.


~Arano
LordKimahri
LordKimahri 23.02.2015 aktualisiert um 20:11:56 Uhr
Goto Top
danke dir, ich wusste was du meinst. aber kam wegen meiner Tibetanischen Gasuhr(kopfschmerzen) nicht auf die lösung^^ teste das gleich ma

//edit

DANKE dir, war sowas von blind wtf RTFM sollte helfen!
Arano
Arano 23.02.2015 aktualisiert um 20:35:16 Uhr
Goto Top
Tibetanische was !? ach egal !

Okay super, dann bitte die Lösung markieren und den Beitrag ebenfalls als gelöst markieren.
Wie du schon sagtest, um für weitere Lösungssuchende die Lösung bereit zu stellen


~Arano