আপনি যে কোনও সময় ...
"সতর্কতা: mysqli_fetch_object () প্রত্যাশা 1 প্যারামিটারটি mysqli_result হবে, বুলিয়ান দেওয়া হয়েছে"
... এটি সম্ভবত কারণ আপনার প্রশ্নের সাথে একটি সমস্যা আছে is prepare()
বা query()
শক্তি প্রত্যাবর্তন FALSE
(ক বুলিয়ান), কিন্তু এই জেনেরিক ব্যর্থতা বার্তা সংকেত সনাক্ত করুন পথে অনেক ছাড়বে না। আপনার প্রশ্নের সাথে কী ভুল তা আপনি কীভাবে আবিষ্কার করবেন? আপনি জিজ্ঞাসা করুন !
প্রথমত, নিশ্চিত হয়ে নিন যে ত্রুটি প্রতিবেদনটি চালু হয়েছে এবং দৃশ্যমান: আপনার খোলার <?php
ট্যাগের ঠিক পরে এই ফাইলটি (গুলি) এর শীর্ষে এই দুটি লাইন যুক্ত করুন :
error_reporting(E_ALL);
ini_set('display_errors', 1);
যদি আপনার ত্রুটি প্রতিবেদনটি php.ini এ সেট করা থাকে তবে আপনাকে এই সম্পর্কে চিন্তা করতে হবে না। কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি ত্রুটিগুলি নিখুঁতভাবে পরিচালনা করেছেন এবং আপনার ব্যবহারকারীর কাছে কখনও কোনও সমস্যার আসল কারণটি প্রকাশ করবেন না। জনগণের কাছে প্রকৃত কারণটি প্রকাশ করা আপনার সাইট এবং সার্ভারগুলিকে ক্ষতি করতে চায় তাদের জন্য স্বর্ণের খোদাই করা আমন্ত্রণ হতে পারে। আপনি যদি ব্রাউজারটিতে ত্রুটিগুলি প্রেরণ করতে না চান তবে আপনি সর্বদা আপনার ওয়েব সার্ভারের ত্রুটি লগগুলি নিরীক্ষণ করতে পারেন। লগ অবস্থানগুলি সার্ভার থেকে সার্ভারে পৃথক হতে পারে যেমন উবুন্টুতে ত্রুটি লগটি সাধারণত অবস্থিত /var/log/apache2/error.log
। আপনি যদি লিনাক্স পরিবেশে ত্রুটি লগগুলি পরীক্ষা করে tail -f /path/to/log
থাকেন তবে রিয়েল-টাইমে ঘটে যাওয়া ত্রুটিগুলি দেখতে বা আপনি সেগুলি তৈরি করার জন্য কনসোল উইন্ডোতে ব্যবহার করতে পারেন ।
একবার আপনি স্ট্যান্ডার্ড ত্রুটি প্রতিবেদনের বাইরে গিয়ে আপনার ডেটাবেস সংযোগ এবং তদন্তগুলিতে ত্রুটি যুক্ত করে যা সমস্যাগুলি চলেছে সে সম্পর্কে আপনাকে আরও বিশদ দেবে। এই উদাহরণটি দেখুন যেখানে কলামের নামটি ভুল is প্রথমত, কোড যা জেনেরিক মারাত্মক ত্রুটি বার্তা দেয়:
$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";
$query = $mysqli->prepare($sql)); // assuming $mysqli is the connection
$query->bind_param('s', $definition);
$query->execute();
ত্রুটিটি জেনেরিক এবং যা চলছে তা সমাধানে আপনার পক্ষে খুব সহায়ক নয়।
কোডের আরও কয়েকটি লাইন দিয়ে আপনি খুব বিস্তারিত তথ্য পেতে পারেন যা আপনি অবিলম্বে সমস্যা সমাধানের জন্য ব্যবহার করতে পারেন । prepare()
সত্যতার জন্য বিবৃতিটি পরীক্ষা করে দেখুন এবং যদি এটি ভাল হয় তবে আপনি বাঁধাই এবং কার্যকর করতে এগিয়ে যেতে পারেন।
$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";
if($query = $mysqli->prepare($sql)) { // assuming $mysqli is the connection
$query->bind_param('s', $definition);
$query->execute();
// any additional code you need would go here.
} else {
$error = $mysqli->errno . ' ' . $mysqli->error; // 1054 Unknown column 'foo' in 'field list'
// handle error
}
কিছু ভুল হলে আপনি একটি ত্রুটি বার্তাটি থুতু ফেলতে পারেন যা আপনাকে সরাসরি সমস্যার দিকে নিয়ে যায়। এই ক্ষেত্রে, foo
সারণীতে কোনও কলাম নেই , সমস্যা সমাধান করা তুচ্ছ।
আপনি যদি চয়ন করেন তবে আপনি এই চেকিংটি কোনও ফাংশন বা শ্রেণিতে অন্তর্ভুক্ত করতে পারেন এবং পূর্বে উল্লিখিত হিসাবে ত্রুটিগুলি কৃপণভাবে পরিচালনা করে এটি প্রসারিত করতে পারেন।