PHP - In Datenbank eintragen

Alice

Erfahrenes Mitglied
Hallo. :)

Ich würde gerne einige Werte in die Datenbank eintragen.

Nur wie mache ich das sicher?

PHP:
   $db->query_write("INSERT INTO " . TABLE_PREFIX . "avatar (userid, username, avatar, datum)
        VALUES (
                '" . intval($userid) . "',
                '" . intval($username) . "',
                '" . intval($avatar) . "',
                '" . intval($datum) . "',
        )");

Ich habe echt keine Ahnung wie ich das machen soll.
 
Jedenfalls nicht mit intval. Oder haben deine User alle Zahlen als Namen und Avatar? :)

Also für die userid ist das ok, für das datum auch (wenn es ein Timestamp ist). Username und Avatar werden wohl Strings sein, also darfst du die nicht in Integer konvertieren, sondern so wie sie sind übernehmen (wobei ich davon ausgehe, dass du die Werte vorher schon validiert hast).
 
Hallo. :)

Was muss ich statt intval denn schreiben?

Alle Variablen sind vor dem eintragen schon validiert. Also unter validiert verstehe ich...

$username = "bl5000";

Muss nach dem Eintragen in die Datenbank noch irgend etwas gemacht werden?

Hier hat mir mal jemand eine "vBulletin typische Methode" gezeigt, wie man etwas in die DB eintragen kann.

PHP:
   $userfieldarray = array('field2' => $avatar);
   $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD);
   $userdata->set_existing($vbulletin->userinfo);
   $userdata->set_userfields($userfieldarray);
   $userdata->pre_save();

//diesen abschnitt verstehe ich nicht.
   if ($userdata->errors) {
      die(print_r($userdata->errors));
   }
      else
   {
      $userdata->save();
   }

Wäre so ein Code evtl. besser geeignet?
 
Also diese Art Mysqlabfragen zu behandeln ist mir bisher nicht geläufig.
Was nicht heissen muss dass es grundsätzlich falsch ist :)
Ich habs nur bisher so noch nicht gesehen.

Versuchs mal so:
SQL:
$link = mysql_connect("localhost", "user", "Password");
		mysql_select_db("Datenbankname", $link);
mysql_query("INSERT INTO
				avatar
					(userid,
					username,
					avatar,
					datum)
				VALUES
					('$userid',
                    '$username',
                    '$avatar',
                    '$datum')");
if (mysql_errno()) {		
	echo mysql_errno() . ": " . mysql_error(). "\n";
}
 
Zuletzt bearbeitet:
Hallo bl5000,

wenn Du solchen Code siehst, dann handelt es sich um Klassen. Sofern Du nicht über die passenden Objekte oder Klassen verfügst (meist in einer externen Klassenbibliothek), vergiß es einfach. Irgendwo vorher muss es ein $userdata = new ..... gegeben haben. Ohne Kenntnis, was dort genau passiert (bzw. wie diese mit welchen Parametern aufzurufen sind), kannst Du damit absolut nichts anfangen. Ich gehe mal Recht in der Annahme, dass Du Dich mit Klassen und Objekten noch nicht weiter beschäftigt hast, oder?

Das Wichtigste ist, dass Du die Eingaben validierst. Entweder über reguläre Ausdrücke oder wenigstens unter Zuhilfename von mysql_real_escape_string().

Und beim Datum nicht vergessen, das sieht immer folgendermaßen bei MySQL aus: Y-m-d, also '2010-11-13' für den heutigen Tag. Deutsche Angaben müssen also entsprechend umgewandelt werden.

Greetz
cw
 
Zurück