PDA

View Full Version : مشکل این ارور (bind value)



olampiad
جمعه 16 بهمن 1394, 00:23 صبح
سلام و خسته نبباشید به دوستان عزیز
به این ارور ی نگا بندازید.
Fatal error: Call to a member function bindValue() on a non-object in C:\xampp\htdocs\smn_zncms\libs\database.php on line 27
مشکل از این ارور چیست ؟
این ارور رو ب یکی از فیلد های من میده و میگه که نیست یا محتوا نداره .
حالا من چطوری میتونم این فیلد رو پیدا کنم.
منظورم اینه که منظورش کدوم فیلده که نیست ؟
آیا روشی برای این ارور سراغ دارید ؟
ممنون

اینم تکه کد برای این ارور.


public function insert($table,$data){ $this->setAttribute(pdo::ATTR_EMULATE_PREPARES,false); ksort($data); $keyfild='`'.implode('`,`',array_keys($data)).'`'; $valfild=':'.implode(',:',array_keys($data)); $res=$this->prepare("INSERT INTO `$table` ($keyfild) VALUES ($valfild)"); foreach($data as $key=>$val){ $res->bindValue(":$key",$val); } $rr=$res->execute(); if($rr){ session::set('insert',true_matn); }else{ session::set('insert',false_matn); }}

به این خط ارور میده
$res->bindValue(":$key",$val);
ب نظرتون مشکل از کجاست؟
ممنون

Unique
جمعه 16 بهمن 1394, 02:47 صبح
مشکل از متغیر res$ هست ، میگه چنین شیئی وجود نداره که حالا من متد bindValue را براش صدا بزنم.
مشکل از ارتباط با Database ،‌ خود res$ یا موارد دیگه باید باشه.

olampiad
جمعه 16 بهمن 1394, 09:46 صبح
من کوئری رو اکو کردم.

INSERT INTO `saman_user` (`address`,`address_job`,`asar`,`child`,`city`,`cm `,`cp`,`date`,`dore`,`email`,`family`,`farhangi`,` father_name`,`gerayesh`,`jens`,`job`,`marrid`,`maz hab`,`mssh`,`name`,`nm_tahsil`,`number`,`phone`,`p ish_sh`,`reshte`,`saman_id`,`sayer`,`semat`,`semat _job`,`shahrestan`,`shsh`,`tahsilat`,`tell_job`,`t ime`,`user`,`v_tahsil`) VALUES (:address,:address_job,:asar,:child,:city,:cm,:cp, :date,:dore,:email,:family,:farhangi,:father_name, :gerayesh,:jens,:job,:marrid,:mazhab,:mssh,:name,: nm_tahsil,:number,:phone,:pish_sh,:reshte,:saman_i d,:sayer,:semat,:semat_job,:shahrestan,:shsh,:tahs ilat,:tell_job,:time,:user,:v_tahsil)

من این تابع رو تو جاهای دیگه استفاده میکنم و اروری نداری ولی اینجا ارور میده . به همین خاطر میگم شاید مشکل از فیلد ها هستش.
ممنون

olampiad
جمعه 16 بهمن 1394, 09:58 صبح
ببخشین من زیاد سوال میپرسم.
میگم شاید تعداد فیلد ها زیاد هستش.
به این تصویر ی نگا بندازید.
138834
این جدول من هستش.
ممنون

H:Shojaei
جمعه 16 بهمن 1394, 11:27 صبح
من کوئری رو اکو کردم.

INSERT INTO `saman_user` (`address`,`address_job`,`asar`,`child`,`city`,`cm `,`cp`,`date`,`dore`,`email`,`family`,`farhangi`,` father_name`,`gerayesh`,`jens`,`job`,`marrid`,`maz hab`,`mssh`,`name`,`nm_tahsil`,`number`,`phone`,`p ish_sh`,`reshte`,`saman_id`,`sayer`,`semat`,`semat _job`,`shahrestan`,`shsh`,`tahsilat`,`tell_job`,`t ime`,`user`,`v_tahsil`) VALUES (:address,:address_job,:asar,:child,:city,:cm,:cp, :date,:dore,:email,:family,:farhangi,:father_name, :gerayesh,:jens,:job,:marrid,:mazhab,:mssh,:name,: nm_tahsil,:number,:phone,:pish_sh,:reshte,:saman_i d,:sayer,:semat,:semat_job,:shahrestan,:shsh,:tahs ilat,:tell_job,:time,:user,:v_tahsil)

من این تابع رو تو جاهای دیگه استفاده میکنم و اروری نداری ولی اینجا ارور میده . به همین خاطر میگم شاید مشکل از فیلد ها هستش.
ممنون
تعداد فیلدها ربطی به خطای کوئری نداره!
همین کوئری که نمایش دادین رو با مقادیری که تو فرم وارد میکنید مقادیرش رو جایگزین کنید توی phpmyadmin تستش کنید و اگر نکته سینتکسی هم اون وسط مسطا داشت بررسی کنید اگر کوئری با جایگذاری مقادیر درست بود مشکل از کانکشنی چیزیه!
(میتونید تو برنامه ای هم که نوشتید به جای :param خود مقدار رو بنویسید واسه تست و بعد خور رشته که ساخته شده رو تو وقت کمتری تست کنید!)