ඔබට ලැබෙන ඕනෑම වේලාවක ...
"අවවාදයයි: mysqli_fetch_object () 1 පරාමිතිය mysqli_result, බූලියන් ලබා දෙනු ඇතැයි අපේක්ෂා කරයි"
... ඔබගේ විමසුම සමඟ ගැටළුවක් ඇති නිසා විය හැකිය. මෙම prepare()
හෝ query()
නැවත වරක් FALSE
(අ බූලීය), නමුත් මේ ලිපිය තුළ වර්ගීය අසාර්ථක පණිවිඩය බොහෝ ඉඟි මාර්ගයෙහි ඔබ අත්හැර නැත. ඔබගේ විමසුමේ වැරැද්ද කුමක්දැයි ඔබ සොයා ගන්නේ කෙසේද? ඔබ අහන්න !
පළමුවෙන්ම, දෝෂ වාර්තා කිරීම සක්රිය කර ඇති බවට වග බලා ගන්න: ඔබේ ආරම්භක <?php
ටැගය අවසන් වූ වහාම මෙම පේළි දෙක ඔබගේ ගොනුවේ (ය) ඉහළට එක් කරන්න :
error_reporting(E_ALL);
ini_set('display_errors', 1);
ඔබගේ දෝෂ වාර්තා කිරීම php.ini හි සකසා ඇත්නම් ඔබට මේ ගැන කරදර විය යුතු නැත. ඔබ වැරදි ලෙස හැසිරවීමට වග බලා ගන්න සහ ඔබේ පරිශීලකයින්ට කිසිදු ගැටලුවක සැබෑ හේතුව කිසි විටෙකත් හෙළි නොකරන්න. මහජනයාට සැබෑ හේතුව හෙළි කිරීම ඔබේ වෙබ් අඩවි සහ සේවාදායකයන්ට හානි කිරීමට කැමති අයට රන් කැටයම් ආරාධනයක් විය හැකිය. ඔබට බ්රව්සරයට දෝෂ යැවීමට අවශ්ය නැතිනම් ඔබට සැමවිටම ඔබේ වෙබ් සේවාදායකයේ දෝෂ සටහන් නිරීක්ෂණය කළ හැකිය. ලොග් ස්ථාන සේවාදායකයේ සිට සේවාදායකයට වෙනස් වේ. උබුන්ටු හි දෝෂ ලොගය සාමාන්යයෙන් පිහිටා ඇත /var/log/apache2/error.log
. ඔබ ලිනක්ස් පරිසරයක දෝෂ ල logs ු-සටහන් පරීක්ෂා කරන්නේ නම්, ඔබට tail -f /path/to/log
තත්ය කාලීනව සිදුවන දෝෂ දැකීමට කොන්සෝල කවුළුවක භාවිතා කළ හැකිය .... නැතහොත් ඔබ ඒවා සාදන විට.
සම්මත දෝෂ වාර්තාකරණයෙන් ඔබ ඉවත් වූ පසු, ඔබේ දත්ත සමුදා සම්බන්ධතාවය සහ විමසීම් වල දෝෂ පරීක්ෂා කිරීම එකතු කිරීමෙන් සිදුවෙමින් පවතින ගැටලු පිළිබඳ වැඩි විස්තර ලබා දෙනු ඇත. තීරුවේ නම වැරදියි මෙම උදාහරණය දෙස බලන්න. පළමුව, සාමාන්ය මාරාන්තික දෝෂ පණිවිඩය ලබා දෙන කේතය:
$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
දී, වගුවේ තීරුවක් නොමැත , ගැටළුව විසඳීම සුළුපටු ය.
ඔබ තෝරා ගන්නේ නම්, ඔබට මෙම පරීක්ෂාව ශ්රිතයකට හෝ පන්තියකට ඇතුළත් කළ හැකි අතර කලින් සඳහන් කළ පරිදි දෝෂ මනාව හැසිරවීමෙන් එය දිගු කළ හැකිය.