ثبت یک آرایه در یک فیلد از جدول mysql
بعد از ساختن دسته بندی مطالب نوبت به ایجاد صفحه ( ایجاد پست ) رسیدم .
همه چیز اوکیه - و وقتی کاربر برای پستش دسته انتخاب میکنه ( id دسته های مورد نظر رو میریزم داخل یک ارایه ) . شما فرض کنید یک پست در چنتا دسته باشه . مثلا یک پست هم در زمینه سلامت باشه هم در زمینه ورزش و هم در زمینه بدنسازی .
حالا موقع ثبت آرایه مورد نظر در بانک اطلاعاتی میرسه . هر کاری میکنم نمیتونم همه id های داخل ارایه رو تو mysql ثبت کنم . از foreach هم استفاده کردم فقط id اخرین دسته انتخابی ثبت میشه .
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
اخرش رو متوجه نشدم foreach برا چیه
- - - Updated - - -
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
The above example will output:
{"a":1,"b":2,"c":3,"d":4,"e":5}
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
کد PHP:
$category_id=$_POST['category_id'];
foreach($category_id as $cat){
}
if($a==1 && $b==1 && $c==1 && $d==1 && $e==1 && !empty($time) && !empty($date) && !empty($level)){
$record=$connect->prepare("INSERT INTO `db_post` (`title`,`text`,`description`,`keywords`,`time`,`date`,`author_id`,`category_id`) VALUES (?,?,?,?,?,?,?,?)");
$record->bindValue(1,$post['title']);
$record->bindValue(2,$post['text']);
$record->bindValue(3,$post['description']);
$record->bindValue(4,$post['keywords']);
$record->bindValue(5,$time);
$record->bindValue(6,$date);
$record->bindValue(7,$level);
$record->bindValue(8,$cat);
if($record->execute()){
$success='پست شما با موفقیت در وبسایت ثبت شده است .';
}
else{
header('location: post.php');
die;
}
}
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
ارایه رو json کنین اونو تو دیتابیس ذخیره کنین ! وقتیم از دیتابیس درمیارید json_decode استفاده کنین
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
کدی که نوشتید قرار دهید، به جای آرایه برای دسته بندی، implode کنید با کارکتر , ،حجم کمتری در دیتابیس میگیرد.
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
نقل قول:
نوشته اصلی توسط
<?php?>
کد PHP:
$category_id=$_POST['category_id'];
foreach($category_id as $cat){
}
if($a==1 && $b==1 && $c==1 && $d==1 && $e==1 && !empty($time) && !empty($date) && !empty($level)){
$record=$connect->prepare("INSERT INTO `db_post` (`title`,`text`,`description`,`keywords`,`time`,`date`,`author_id`,`category_id`) VALUES (?,?,?,?,?,?,?,?)");
$record->bindValue(1,$post['title']);
$record->bindValue(2,$post['text']);
$record->bindValue(3,$post['description']);
$record->bindValue(4,$post['keywords']);
$record->bindValue(5,$time);
$record->bindValue(6,$date);
$record->bindValue(7,$level);
$record->bindValue(8,$cat);
if($record->execute()){
$success='پست شما با موفقیت در وبسایت ثبت شده است .';
}
else{
header('location: post.php');
die;
}
}
این روش درستی نیست همه دسته هاتون که تو ارایه هستن رو اینجور ذخیره کنین
- - - Updated - - -
دوست عزیز نمیدونم تو کلاس های هسته جلوش گرفته شده یا نه ولی این روش کدنویسیتون sql injection داره ها:)
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
از sql injection با یک تابع هنگام ورودی جلوگیری شده . بخشی از کد رو اینجا گذاشتم .
این تمام کد صفحه ایجاد مطلب هست :
http://paste.ofcode.org/scghhzeiycWX6b3AwDD4qd
پاسخ : ثبت یک آرایه در یک فیلد از جدول mysql
حل شد از همه دوستان ممنونم