này là lỗi Fatal error: Call to undefined function assign(
này là mã, như bạn có thể nhìn thấy tôi rõ ràng đã xác định chức năng vậy tại sao là nó không làm việc"gọi đến chức năng xác định" lỗi khi gọi phương thức lớp
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!";}
};
}
}
Mã mẫu có thể dễ bị tấn công [SQL injection] (http://unixwiz.net/techtips/sql-injection.html) trong hàm 'delassign'. Để sửa lỗ này, hãy chuyển từ trình điều khiển mysql lỗi thời sang [PDO] (http://php.net/PDO) và sử dụng [báo cáo đã chuẩn bị] (http://www.php.net/PDO.prepared-statements). Lưu ý điều này vượt trội so với việc vệ sinh rõ ràng bởi vì trong khi bạn có thể quên khử trùng, không có gì để bảo mật với các tham số đã được chuẩn bị sẵn sàng (nếu bạn quên một tham số, PHP sẽ tạo ra một lỗi thông báo cho bạn). – outis
... Nếu bạn cần hướng dẫn PDO, hãy thử ["Viết kịch bản MySQL bằng PHP và PDO"] (http://www.kitebird.com/articles/php-pdo.html). – outis