خطا‌‌ها‌ی زیر رخ داد:
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 752 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 752 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 752 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 752 postParser->parse_message
/showthread.php 1063 build_postbit
Warning [2] preg_replace_callback(): Requires argument 2, 'mwsshcode_check("$1","$2")', to be a valid callback - Line: 197 - File: inc/plugins/mwsshcode.php PHP 7.3.4 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/plugins/mwsshcode.php 197 preg_replace_callback
/inc/class_plugins.php 139 mwsshcode_run
/inc/class_parser.php 187 pluginSystem->run_hooks
/inc/functions_post.php 721 postParser->parse_message
/showthread.php 1063 build_postbit




رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارتباط بین فرزند و والد در جدول category (حل شد)
#1
تو پروژه ی mvc تو جدول category چنین رابطه ای رو ایجاد کردم :

[shcode=php]

`blog`.`category`, CONSTRAINT `category_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE CASCADE

[/shcode]

در بخشی از پروژه در قسمت ویرایش دسته ها ، میخوام کاری کنم که در مدیریت بشه ، یک فرزند رو تغییر داد و اونو والد کرد . یعنی parent_id اون بشه NULL .

اما این خطا اتفاق می افته :

نقل قول:
Cannot add or update a child row: a foreign key constraint fails (`blog`.`category`, CONSTRAINT `category_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE CASCADE)
)

آیا ارتباطی به cascade داره یا خیر ؟
پاسخ
تشکر شده توسط:
#2
فیلد parent_id رو Nullable گذاشتین؟
پاسخ
تشکر شده توسط: mary
#3
کد فرمتون رو بگذارین چون احساس میکنم Null نمیشه. دقت کنید که Null رو نباید توی کوتیشن بگذارین توی کوئری. مثال:
[shcode=sql]UPDATE `category` SET `parent_id`=NULL WHERE (`id`='5');[/shcode]

و این کد اشتباهه:
[shcode=sql]UPDATE `category` SET `parent_id`='NULL' WHERE (`id`='5');[/shcode]
پاسخ
تشکر شده توسط: mary
#4
بله این فیلد رو پیش فرض null گزاشتم که موقع درج اگر والدی انتخاب نشد ، NULL ثبت بشه .
هم مقدار پیش فرض رو NULL گزاشتم و هم nullable


در قسمت ویرایش گفتم اگر کاربر از منو ، گزینه ی " بخش اصلی " رو انتخاب کرد اینو ست کنه :
[shcode=php]
$data['parent_id']=NULL;
[/shcode]
پاسخ
تشکر شده توسط:
#5
اینو تست کنید:
[shcode=php]$data->parent_id = null;[/shcode]
پاسخ
تشکر شده توسط: mary
#6
مشکل در کد update ای هست که بصورت PDO نوشتم :

[shcode=php]public function update($tabel, $fild = null ,$where = null)
{
$update = 'UPDATE '.$tabel.' SET ';
$set=null; $value=null;
foreach($fild as $key => $values)
{
$set .= ', '.$key. ' = :'.$key;
$value .= ', ":'.$key.'":"'.$values.'"';
}
$update .= substr(trim($set),1);
$json = '{'.substr($value,1).'}';
$param = json_decode($json,true);

if($where != null)
{
$update .= ' WHERE '.$where;
}

$query = parent::prepare($update);
$query->execute($param);
$rowcount = $query->rowCount();
return $rowcount;
}[/shcode]

در قسمت foreach فکر میکنم NULL در رشته قرار میگیره و قبول نمیکنه .

نمیدونم چطور برای مقادیر NULL این کد رو اصلاح کنم . اگر کوتیشن ها رو بردارم برای execute خطا میده .
پاسخ
تشکر شده توسط:
#7
خوب یه if بگذارین اگه values$ نال بود کوتیشن نگذاره. بعد هم من نفهمیدم چرا JSON رو قاطی ماجرا کردین. این کد رو تست کنید:
[shcode=php]public function update($table, $fields = null ,$where = null)
{
$sql = 'UPDATE ' . $table.' SET ';
$updateFields = array();
$params = array();
foreach($fields as $key => $value) {
if(is_null($value)) {
$updateFields[] = '`' . $key . '`=NULL';
}
else {
$updateFields[] = '`' . $key . '`=:' . $key;
$params[':' . $key] = $value;
}
}
$sql .= implode(', ', $updateFields);

if(!is_null($where)) {
$sql .= ' WHERE ' . $where;
}
$query = parent::prepare($sql);
$query->execute($params);
return $query->rowCount();
}[/shcode]
پاسخ
تشکر شده توسط: mary
#8
خیلی ممنونم . حل شد .
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان