PDA

View Full Version : مشکل با تابع mysql_fetch_array



rezarss
شنبه 16 بهمن 1389, 17:24 عصر
سلام
من برای خواندن mysql از mysql_fetch_array استفاده کردم و جواب داد. حالا می خوام یه اسکریپتی بنویسم تقریباً مثل قبلی که محتویات mysql رو بخونه ولی اینبار ارور می ده
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files (x86)\EasyPHP 3.0\www\manual\my project\old\checklogin.php on line 26
در کل بعضی وقتها با این تابع همین مشکل رو دارم.
و اینکه در چه مواقعی باید از این تابع استفاده کنم؟

mohsen6500
شنبه 16 بهمن 1389, 19:06 عصر
خوب دوست عزیز حتما برای اتصال به جدولت درست متصل نمیشی
یا اینکه اون فیلدی رو که میخوای بهش وصل بشی مشکل داره توی کد نویسیش
و واسه همین این یکی ارور میده چون پیداش نمیکنه میگه من چی رو بگیرم؟!!
کل کدت و بذار تا بشه روش بحث کرد

MMSHFE
یک شنبه 17 بهمن 1389, 09:18 صبح
با سلام، دوست عزيز احتمالاً يا Query شما درست نبوده يا اينكه خروجي اون رو توي متغيري گذاشتين كه از اون متغير بعنوان پارامتر ورودي mysql_fetch_array استفاده نكردين. بهتره اين دو مورد رو بررسي كنيد. براي اينكه بدونيد چه خطايي پيش اومده، قبل از دستور mysql_fetch_array از دستور زير استفاده كنيد:


echo(mysql_error()."<BR/>\n");

موفق و مؤيد باشيد.

sattaryekta
یک شنبه 17 بهمن 1389, 11:25 صبح
این خطا میگه Query شما صحیح نیست!
یا اینکه متغیری که داخل این تابع گذاشتی صحیح نیست.

ghasemweb
شنبه 23 بهمن 1389, 14:50 عصر
این خطا موقعی رخ میده که کوئری ما خالی باشه یعنی هیچ بازگشتی نداشته باشه و ما از mysql_fetch_array استفاده کنیم.

alonemm
شنبه 23 بهمن 1389, 14:58 عصر
باسلام:
بهتره از بلاک های کد نویسی Try و Catch برای سهولت در مدیریت خطاها استفاده کنید.

امیـرحسین
شنبه 23 بهمن 1389, 22:49 عصر
اینجا Try/Catch کار جالبی نیست چون خطا وجود داره.
باید خطا رو بررسی کنید. این تابع با تعداد سطر صفر هم کار میکنه! یعنی اگر کوئری صحیح اجرا شه ولی سطری پیدا نشه این خطا ایجاد نمیشه!

رضا قربانی
یک شنبه 24 بهمن 1389, 09:46 صبح
سلام
من برای خواندن mysql از mysql_fetch_array استفاده کردم و جواب داد. حالا می خوام یه اسکریپتی بنویسم تقریباً مثل قبلی که محتویات mysql رو بخونه ولی اینبار ارور می ده
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files (x86)\EasyPHP 3.0\www\manual\my project\old\checklogin.php on line 26
در کل بعضی وقتها با این تابع همین مشکل رو دارم.
و اینکه در چه مواقعی باید از این تابع استفاده کنم؟

باید کد خودتون رو قرار بدید تا بهتون بگیم مشکلتون از کجاست و به اشتباهتون پی ببرید

mtchabok
یک شنبه 24 بهمن 1389, 10:41 صبح
این نوع خطا برای زمانی اتفاق میافته که نتیجه بازگشتی از تابع mysql_query یه ایندکس نتیجه نباشه .
دلایل اتفاق این خطا شامل نکات زیر میشه :
- کوئری ارسالی به پایگاه داده ایراد نوشتاری داره .
- فیلدهای درخواست داده شده وجود ندارند .
- جدول و یا دیتابیس وجود ندارند و یا حق دسترسی به آنها وجود نداره .

بیشتر اوقات این خطا به دلیل اشکال در کوئری ارسالی هس که شما هم باید کوئری رو برامون بزارید تا ما هم بتونیم بهتون کمک کنیم .

ghasemweb
یک شنبه 24 بهمن 1389, 16:17 عصر
به کد زیر توجه کنید :


<php
$res=mysql_query("select * from tbl1",$config) or die(mysql_error());
while($rows=mysql_fetch_array ($res))
{
echo fields-value;

}

?>

این کد تو خط while همون خطای فوق رو میده!!

ghasemweb
یک شنبه 24 بهمن 1389, 23:46 عصر
دوستان منتظرم جواب بدید

farshad_persia
دوشنبه 25 بهمن 1389, 02:28 صبح
به کد زیر توجه کنید :


<php
$res=mysql_query("select * from tbl1",$config) or die(mysql_error());
while($rows=mysql_fetch_array ($res))
{
echo fields-value;

}

?>

این کد تو خط while همون خطای فوق رو میده!!

پیشنهاد من اینه که شما کوئری رو ببر تو بخش sql در php myadmin یک تست بزن ببین خطا داری یا نه
هر چند که با mysql_error باید جوابتونو بگیرین
در ضمن اون fields-value هم هیچ معنایی نداره
شما باید بدونین که رکورد های شما در $rows ریخته شده و به این صورت باید بخونینش
echo $rows['field'];
موفق باشید

MMSHFE
دوشنبه 25 بهمن 1389, 08:19 صبح
با سلام، كد زير رو امتحان كنيد:


<?PHP
$res=mysql_query("select * from `tbl1`") or die(mysql_error());
while($row=mysql_fetch_array($res))
{
$keys=array_keys($row);
foreach($keys as $key)
{
echo($row[$key].'<BR/>');
}
}
?>

يا


<?PHP
$res=mysql_query("select * from `tbl1`") or die(mysql_error());
while($row=mysql_fetch_array($res))
{
echo('<PRE>');
print_r($row);
echo('</PRE>');
}
?>

اميدوارم براي شما هم مثل من جواب بده. موفق و مؤيد باشيد.

amir001
دوشنبه 25 بهمن 1389, 10:42 صبح
این ارور 100 در صد مربوط به res$ هست.

برای تابع mysql_query پارامتر دوم را هم بذار جواب میگیری.

اگر نشد توابع اتصال به دیتابیست را هم بذار تا برات تستش کنیم.

بعد از اجرای کوئری تابع زیر را اجرا کن تا ببینی چند خط انتخاب شده.


mysql_num_rows($res);