dies ist der Fehler Fatal error: Call to undefined function assign(
Dies ist der Code. Wie Sie sehen können, habe ich die Funktion offensichtlich definiert. Warum funktioniert sie nicht?
class shades {
function create($name, $shades, $slug, $shortDesc, $longDesc, $position){
$name = sanitize_paranoid_string($name);
$slug = slug($name);
$shortDesc = sanitize_sql_string($shortDesc);
$longDesc = sanitize_sql_string($longDesc);
$query = mysql_query("INSERT INTO products (type, name, slug, shortDesc, htmlDesc, position)VALUES('shades','$name','$slug','$shortDesc','$longDesc','$position')")or die(mysql_error());
$ID = mysql_insert_id();
assign($shades, $ID);
if($query) {return true;}
else {return false;};
}
function delassign($toID){
mysql_query("DELETE FROM assign WHERE type='shades' AND toID='$toID'")or die(mysql_error());
}
function assign($shades, $toID)
{
foreach($shades as $shade)
{
$result = mysql_query("INSERT INTO assign(type, typeID, toID)VALUES('shades','$shade','$toID')")or die(mysql_error());
if($result){echo "Added!";}
else{echo"Not Added!";}
};
}
}
Sie haben keine Funktion namens assign()
, sondern eine Methode mit diesem Namen. PHP ist kein Java und in PHP müssen Sie deutlich machen, ob Sie eine Funktion aufrufen möchten
assign()
oder eine Methode
$object->assign()
In Ihrem Fall befindet sich der Aufruf der Funktion in einer anderen Methode. $this
bezieht sich immer auf das Objekt, in dem sich eine Methode selbst befindet.
$this->assign()
sie müssen die Funktion so aufrufen
$this->assign()
statt nur assign()
Kameraden,
Ich bin heute beim Testen eines einfachen Skripts auf diesen Fehler gestoßen. Ich benutze zwar nicht die "Klassen" -Funktion, also nehme ich es mit dem Salzkorn . Ich habe die Funktion vor der Definition und Deklaration aufgerufen ... so etwas
try{
foo();
}
catch (exception $e)
{
echo "$e->getMessage()";
}
function foo(){
echo "blah blah blah";
}
also warf mir php Fehler "Aufruf an undefinierte Funktion".
Dies scheint ein klassischer Programmierfehler zu sein, kann jedoch jemandem helfen, der Anhaltspunkte benötigt.
Ein weiterer dummer Fehler, den Sie tun können, ist das Kopieren einer rekursiven Funktion von einer Umgebung außerhalb einer Klasse in eine Klasse.
ich schreibe das, weil ich nicht verstehen konnte, warum ich diesen Fehler bekam. Dieser Thread ist der erste in Google, wenn Sie nach diesem Fehler suchen.