2016-07-22 14 views
-1

Ich weiß, es gibt mehrere ähnliche Fragen wie meine. Aber ich habe die meisten von ihnen durchgelesen, aber nur ähnliche Antworten gefunden, die meine Situation nicht lösen:Warnung: Erstellen Standardobjekt aus leeren Wert PHP

Ich erstelle eine PHP-Website mit OOP und möchte einen Datensatz aus der Datenbank bearbeiten. Hier ist der Link zu edit_short.php:

<td><a href="edit_short.php?id=<?php echo $short->id; ?>">Edit</a></td> 

Dieser Rekord-ID in edit_short.php empfangen wird, wie folgt:

<?php 
require_once("short.php"); 
$id = null; 
// $short = new stdClass(); **I was told to use this but it didn't work** 

if (isset($_GET['id'])) { 
    $id=$_GET['id']; 
    $short = Short::find_by_id($id); 
} 

if (isset($_POST['edit_short_btn'])) { 
    $short->title = $_POST['title']; //the error is on this line 
    $short->short_text = $_POST['short_text']; 
} 

Hier ist meine der entsprechende Abschnitt meiner Short Klasse:

public static function find_by_id($id=0) { 
    global $database; 
    $result_array = self::find_by_sql("SELECT * FROM short WHERE id=$id LIMIT 1"); 
    return !empty($result_array) ? array_shift($result_array) : false; 
} 

Einige Antworten auf Stackoverflow und andere Websites wurde mir gesagt, $short als ein Objekt der stdClass() zu definieren, aber das tut nicht 't hier anwenden, da $short Objekt in meinem Fall der Short Klasse sein muss.

Danke Ihnen für jede Hilfe ..

+0

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! [Glauben Sie es nicht?] (Http://stackoverflow.com/q/38297105/1011527) –

+0

FYI, Ihr Code unterliegt SQL-Injection-Angriffen und wahrscheinlich auch XSS. Verwenden Sie vorbereitete/parametrisierte Abfragen in Ihrem SQL. Verwenden Sie 'htmlspecialchars()' oder ähnliches, wenn Sie Daten in einen HTML-Kontext einfügen. – Brad

+0

setzen Sie einfach ein @ vor dieser Zeile, es ist die Antwort auf jeden Fehler in PHP;) – 1Canuck16

Antwort

0

Es scheint, wie Sie überprüfen nicht für den Fall, wenn find_by_id(...) kehrt false, die diese Warnung verursachen könnte.

Verwandte Themen