Hi!
Guck dir die Datentypen an. Wenn du ohne mysql_real_escape_string() codest, wird im Statement ein varchar mit f='$string' und ein integer mit f=$number notiert. Verwendest Du jedoch mysql_real_escape_string($string) erzeugt Dein einfaches Hochkomma eine Warnmeldung im dem Fall, wenn der Datentyp varchar ist. Lass das eigene Quoten weg, dann gibts auch keine Warnung.
Erzähl bitte keinen Unsinn. Yadgar hat es schon schwer, fachlich korrekte Aussagen zu verstehen, da musst du ihn nicht noch mit solchem Zeug in die Irre führen. Die Ursache des Problems ist nicht, dass im Falle der Person.ID Zahlenwerte in Hochkomma notiert wurden. Damit hat MySQL auch überhaupt kein Problem und erzeugt auch keine Warnung. Die fragliche Warnung ist eine, die PHP erzeugt, weil bei einem Funktionsaufruf ein nicht erwartetet Parametertyp übergeben wurde. Sie kommt nicht von MySQL. Die Ursache ist ein falscher Aufbau des PHP-Codes.
INSERT INTO table (int_feld) VALUES ('42')
wird klaglos von MySQL verarbeitet, weil es selbständig eine Typumwandlung vornimmt. Die muss es übrigens auch ohne Hochkomma vornehmen, weil die 42 im SQL-Statement auch nur ein String ist.
Natürlich ist es nicht korrekt, Zahlen in Hochkomms zu notieren, aber wie gesagt, zumindest beim einfachen INSERT ist das problemlos verwendbar. Besser wäre es: Zahlen im (My)SQL-Statement.
Lo!