这是错误Fatal error: Call to undefined function assign(
这是代码,你可以看到我显然定义了函数,为什么它不起作用
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!";}
};
}
}
答案 0 :(得分:92)
您没有名为assign()
的函数,而是具有此名称的方法。如果你想调用一个函数
assign()
或方法
$object->assign()
在您的情况下,对函数的调用驻留在另一个方法中。 $this
总是指对象,其中存在方法本身。
$this->assign()
答案 1 :(得分:14)
你需要像这样调用这个函数
$this->assign()
而不只是assign()
答案 2 :(得分:3)
配合,
我在测试一个简单的脚本时偶然发现了这个错误。我没有使用" class"虽然功能如此,但它带有一粒盐。 我在定义之前调用函数&声明......这样的事情
try{
foo();
}
catch (exception $e)
{
echo "$e->getMessage()";
}
function foo(){
echo "blah blah blah";
}
所以php让我犯了错误"调用未定义的函数"。
这似乎是经典的编程错误,但可能会帮助需要线索的人。
答案 3 :(得分:0)
你可以做的另一个愚蠢的错误是将递归函数从非类环境复制到类,并且不要将内部自我调用更改为$ this-> method_name()
我写这篇文章是因为无法理解为什么我收到此错误,当你搜索这个错误时,这个帖子在google中是第一个。