【发布时间】:2011-06-16 03:11:28
【问题描述】:
这是错误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!";}
};
}
}
【问题讨论】:
-
示例代码可能容易受到函数
delassign中的SQL injection 的攻击。要修复这个漏洞,请从过时的 mysql 驱动程序切换到 PDO 并使用 prepared statements。请注意,这优于显式清理,因为虽然您可以忘记清理,但使用准备好的语句参数不会忘记安全方面的事情(如果您忘记了参数,PHP 将生成错误通知您)。 -
...如果您需要 PDO 教程,请尝试"Writing MySQL Scripts with PHP and PDO"。