هناك ثلاث أنواع من الأخطاء في php
Parse Errors
Header Errors
mySQL Result Source Errors خلل في نتائج الإستعلام في قاعدةالبيانات
Parse Errors
مثال
سبب الخلل هو خلل بسيط في عملية ترجمة البرنامج و هو غالبا خطأ مطبعي قد تكون نسيت الفاصلة المنقوطة ; أو نسيت إقفال الأقواس أو اخطأ ت في صيغة الدالة مثلا الدالة تأخذ متغير واحد و انت وضعت 2 و هكذا .كود:Parse error: parse error, unexpected T_STRING in /home/www/html/script/cat.php on line 11
الحلراجع كودك و انظر إلى رقم السطر الذي ذكر لك في رسالة الخطأ من المستحسن أن ترتب كودك بمعنى أن تترك المسافات اللازمة مثلا الشكل التالي غير عملي
و لكن نسقة بهذا الشكلكود PHP:PHP CODE : <?
if($test==1){
echo "one";}
else{ echo "two"; }
?>
لتعرف بداية و نهاية كل كود كما يستحسن استخدام أحد المحررات التي تسمح بتلوين الشفرة لتعرف في حال نسيت إقفال أقواس النص .كود PHP:PHP CODE : <?
if($test==1){
echo "one";
}
else{
echo "two";
} ?>
Header Errors
مثال
كود:Warning: Cannot add header information - headers already sent by (output started at /home/www/html/test/showclass.php:9) in /home/www/html/test/showclass.php on line 10
سبب الخللدالات HTTP header هي دالة موجود في الphp تستخدم لعدة أسباب منها و هي دالات يجب أن توضع قبل طباعة أي شئ حتى السطر الفارغ أي يجب أن لا يظهر قبلها سطر فارغ و أن لايطبع قبلها اي شئ في المتصفح سواء باستخدام الhtml العادي أو بأستخدام دالة echo أو print أحد أكثر الدالات من هذا النوع استخداما هي
Header("location: http://ww.qatardr.net.com");
و
setcookie()
الحل تأكد من عدم وجود أي مخرجات قبل هذه الدوال حتى الأسطر الفارغة
mySQL Result Source Errors
مثال
سبب الخلل حسنا اكتشاف هذا الخلل يجتاج للقليل من البحث و في الغالب المشكلة في المتغير result و الذي يستخدم في حلقة التكرار loop مثلا لو كان الكود بالشكل التاليكود:Warning: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/virtual/site5/fst/php/error/index.php on line 3
PHP CODE :ستلاحظ أن الخلل في الدالة mysql_fetch_array لكن في الحقيقة الخلل في المتغير result فهو السبب كونه لم يحتوى على نتائج من الإستعلام و الخلل به حيث لو لاحظت الاستعلام كلمة order غير صحيحةكود PHP:<?
$result = mysql_query("select * from shoutbox ORER by id desc limit 5");
//problem on the above line, ORDER is misspelled
while($r=mysql_fetch_array($result))
{
$time=$r["time"]; //getting each variable from the table
$id=$r["id"];
$message=$r["message"];
$name=$r["name"];
}
?>
الحل أولا اذهب إلى السطر الذي يقوم الphpان الخلل به
تأكد من ان السطر صحيح و في اغلب الأوقات سيكون صحيح و الأن انتقل إلى الأعلى قليلا و انظر للمتغير result من أين يأخذ نتائجة في حالتنا كانت المشكلةفي الإستعلام لكن البphpلم يعلم بل اظهر أن الخلل في السطر المحتوي علىmysql_fetch_array
ملحوظة أخيرة
احيانا قد تظهر رسالة خلل و يبدو كل شئ صحيح لكن سيظهر لك البرنامج نوع من التحذير يمكنك وقف هذا التحذير باستخدام الرمز @ قبل الدالة مثلا @mysql_fetch_array
المصدر : http://qatardr.net/showclass.php?classid=876


رد مع اقتباس
