PDA

View Full Version : سوال فوری



kimyaaa
جمعه 27 دی 1387, 20:41 عصر
سلام دوستان

من هر کدی در ارتباط با پایگاه داده می‌نویسم این خطا رو میده و اصلا نمی‌تونه اطلاعات رو از پایگاه داده استخراج کنه یعنی چه اشکالی وجود داره، کسی میتونه کمکم کنه؟ البته فقط وقتی آرگومان رو یک متغیر میدم این اشکال رو پیدا می کنه، اگه یک فیلد ثابت جدول رو بدم درست جواب میده
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result

narsic
جمعه 27 دی 1387, 21:03 عصر
با سلام
ابتدا لطفا کدتون رو قرار بدید تا بهتر کمک کنیم .
طبق این خطا شما دستور mysql_num_rows رو همراه با آرگومان ناصحیح دادید .
به این شکل استفاده کنید


$result = mysql_query("SELECT * FROM table1");
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

البته دستور Query رو میتونید به شکل های دیگری بنویسید البته تنها از دستورات Select استفاده کنید .
موفق باشید

kimyaaa
جمعه 27 دی 1387, 21:10 عصر
$sql="SELECT password FROM login WHERE username=$user";
$result=mysql_query($sql);
if (mysql_num_rows($result)==1)
...........

yaqubian
جمعه 27 دی 1387, 21:37 عصر
دوست عزیز
لطفا این دستورات رو بنویسید:

$result=...
if(!$result)
{
die(mysql_error());
}
دستور die بکمک mysql_error به شما اون چیزی که باعث بوجود اومدن خطا می شه رو نشون می ده!
اینجوری debug کردن راحت تر می شه!
موفق باشید

I,Nobody
جمعه 27 دی 1387, 22:47 عصر
$sql="SELECT password FROM login WHERE `username`='$user'";

</span></span>

Yousha
جمعه 27 دی 1387, 23:31 عصر
$sql= "SELECT `password` FROM `login` WHERE `username`= $user";
$result= @mysql_query((string)$sql) or @exit(mysql_error());
if(!mysql_num_rows($result) =< 0): @exit(mysql_error());
endif;

به جای نام login اگر از members استفاده کنید بهتره.
ایمن سازی متغیر user$ هم یادتون نره!

kimyaaa
شنبه 28 دی 1387, 18:30 عصر
دوست عزیز
لطفا این دستورات رو بنویسید:

$result=...
if(!$result)
{
die(mysql_error());
}
دستور die بکمک mysql_error به شما اون چیزی که باعث بوجود اومدن خطا می شه رو نشون می ده!
اینجوری debug کردن راحت تر می شه!
موفق باشید





ممنونم. با اضافه کردن این کد چنین خطایی میده:
Unknown column 'kimyaaa' in 'where clause'

در حالی که در پایگاه داده من این نام وجود داره

kimyaaa
شنبه 28 دی 1387, 18:50 عصر
$sql= "SELECT `password` FROM `login` WHERE `username`= $user";
$result= @mysql_query((string)$sql) or @exit(mysql_error());
if(!mysql_num_rows($result) =< 0): @exit(mysql_error());
endif;

به جای نام login اگر از members استفاده کنید بهتره.
ایمن سازی متغیر user$ هم یادتون نره!




ممنون با این تغییرات این خطا:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''login' WHERE
’username’=’kimyaaa’ at line 1


ایمن سازی چطوریه؟

narsic
شنبه 28 دی 1387, 19:35 عصر
منظور از ایمن سازی اینه که اطلاعات وارد شده توسط کاربر فقط اطلاعات خواسته شده باشه نه چیز دیگه به طور مثال دستوراتی برای تغییر در شرط نباشند و یا از دسته حملات xss نباشند .
برای این کار توابع زیادی نوشته شده در همین سایت هم بگردید به موارد خوبی بر میخورید .
در مورد مشکل بعدی هم به این شکل استفاده کنید (راه قطعی نیست)


$sql= "SELECT password FROM login WHERE username='$user' ";
$result= @mysql_query((string)$sql) or @exit(mysql_error());
if(!mysql_num_rows($result) =< 0): @exit(mysql_error());
endif;

البته استفاده از @ از لحاظ امنیتی کار صحیحی نیست .


موفق باشید

yaqubian
یک شنبه 29 دی 1387, 09:01 صبح
دوست عزیز
وقتی همچین خطایی رو می ده یعنی اون ستون رو نداره! احتمالا املای اون رو اشتباه نوشتید!
موفق باشید

I,Nobody
یک شنبه 29 دی 1387, 11:31 صبح
WHERE ’username’=’kimyaaa’

بايد بشه


WHERE `username`=’kimyaaa’

ضمناً من فكر ميكنم كدي رو كه من براي شما گذاشتم، تست نكرديد. مشكلتون بايد با همون حل ميشد

kimyaaa
سه شنبه 01 بهمن 1387, 09:05 صبح
منظور از ایمن سازی اینه که اطلاعات وارد شده توسط کاربر فقط اطلاعات خواسته شده باشه نه چیز دیگه به طور مثال دستوراتی برای تغییر در شرط نباشند و یا از دسته حملات xss نباشند .
برای این کار توابع زیادی نوشته شده در همین سایت هم بگردید به موارد خوبی بر میخورید .
در مورد مشکل بعدی هم به این شکل استفاده کنید (راه قطعی نیست)


$sql= "SELECT password FROM login WHERE username='$user' ";



$result= @mysql_query((string)$sql) or @exit(mysql_error());
if(!mysql_num_rows($result) =< 0): @exit(mysql_error());
endif;


البته استفاده از @ از لحاظ امنیتی کار صحیحی نیست .




موفق باشید



سلام
از شما و بقیه دوستان خیلی ممنونم . با این کد مشکل من حل شد. فقط اگه میشه بگین این @mysql_query چی بود؟ یه توضیحی راجع بهش بدین؟ بازم ممنون

kimyaaa
سه شنبه 01 بهمن 1387, 09:10 صبح
WHERE ’username’=’kimyaaa’

بايد بشه


WHERE `username`=’kimyaaa’

ضمناً من فكر ميكنم كدي رو كه من براي شما گذاشتم، تست نكرديد. مشكلتون بايد با همون حل ميشد


از شما ممنون. من تمام کدها و راه حل هایی که دوستان گفتن رو انجام دادم تا بالاخره درست بشه.