هناك ثلاث أنواع من الأخطاء في php
- Parse Errors
- Header Errors
- mySQL Result Source Errors خلل في نتائج الإستعلام في قاعدةالبيانات
Parse Errors
مثال
Parse error: parse error, unexpected T_STRING in
/home/www/html/script/cat.php on line 11
سبب الخلل
هو خلل بسيط في عملية ترجمة البرنامج و هو غالبا خطأ مطبعي قد تكون نسيت
الفاصلة المنقوطة ; أو نسيت إقفال الأقواس أو اخطأ ت في صيغة الدالة مثلا
الدالة تأخذ متغير واحد و انت وضعت 2 و هكذا .
الحل
راجع كودك و انظر إلى رقم السطر الذي ذكر لك في رسالة الخطأ من المستحسن أن
ترتب كودك بمعنى أن تترك المسافات اللازمة مثلا الشكل التالي غير عملي
<?
if($test==1){
echo "one";}
else{ echo "two"; }
?>
و لكن نسقة بهذا الشكل
<?
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
مثال
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
سبب الخلل حسنا اكتشاف هذا الخلل يجتاج للقليل من البحث و في الغالب
المشكلة في المتغير result و الذي يستخدم في حلقة التكرار loop مثلا لو كان
الكود بالشكل التالي
<?
$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"];
}
?>
ستلاحظ أن الخلل في الدالة mysql_fetch_array لكن في الحقيقة الخلل في
المتغير result فهو السبب كونه لم يحتوى على نتائج من الإستعلام و الخلل به
حيث لو لاحظت الاستعلام كلمة order غير صحيحة
الحل
أولا اذهب إلى السطر الذي يقوم الphpان الخلل به
تأكد من ان السطر صحيح و في اغلب الأوقات سيكون صحيح و الأن انتقل إلى
الأعلى قليلا و انظر للمتغير result من أين يأخذ نتائجة في حالتنا كانت
المشكلةفي الإستعلام لكن البphpلم يعلم بل اظهر أن الخلل في السطر المحتوي
علىmysql_fetch_array
ملحوظة أخيرة
احيانا قد تظهر رسالة خلل و يبدو كل شئ صحيح لكن سيظهر لك البرنامج نوع من
التحذير يمكنك وقف هذا التحذير باستخدام الرمز @ قبل الدالة مثلا
@mysql_fetch_array
مترجم عن
http://www.spoono.com/php/tutorials/tutorial.php?id=31 بتصرف
|