PDA

View Full Version : مشکل در query



binyaft
پنج شنبه 04 شهریور 1389, 12:59 عصر
سلام به همه دوستان
من یه کئوری دارم به صورت زیر

SELECT * FROM `user` WHERE username='$username' OR id='$username'
متغییر $username ورود یه تابع هست
ورودی این تابع میتونه عدد باشه (id) یا نام کاربری (username)
حالا من وقتی این دو تا رو با هم OR میکنم توی برنامه باگ ایجاد میکنه
کسی راه بهتری برای OR کردن در mysql داره
ممنون

bestirani2
پنج شنبه 04 شهریور 1389, 13:08 عصر
سلام به همه دوستان
من یه کئوری دارم به صورت زیر

SELECT * FROM `user` WHERE username='$username' OR id='$username'متغییر $username ورود یه تابع هست
ورودی این تابع میتونه عدد باشه (id) یا نام کاربری (username)
حالا من وقتی این دو تا رو با هم OR میکنم توی برنامه باگ ایجاد میکنه
کسی راه بهتری برای OR کردن در mysql داره
ممنون
یعنی چی باگ پیدا میشه؟

binyaft
پنج شنبه 04 شهریور 1389, 13:11 عصر
یعنی اینکه همه چی درسته ولی یهو میبینی یه کاربر رو با ID تشخیص نمیده یا با نام کاربری تشخیص نمیده
و اطلاعات یه کاربر دیگه رو میکشه بیرون

binyaft
پنج شنبه 04 شهریور 1389, 13:28 عصر
کسی نیست جواب بده

bestirani2
پنج شنبه 04 شهریور 1389, 13:36 عصر
خوب بیا چک کن ببین عدد هست یا نه
اگر عدد بود بفرست به آی دی اگر رشته بود بفرست به یوزر

binyaft
پنج شنبه 04 شهریور 1389, 13:42 عصر
خوب اگر قرار بود این کا رو بکنم برای چی OR گذاشتم ؟؟؟؟؟

binyaft
پنج شنبه 04 شهریور 1389, 13:57 عصر
کسی نیست :عصبانی++:

صابر طهماسبی
پنج شنبه 04 شهریور 1389, 14:09 عصر
کار شما پایه ای مشکل دارد
بهتر است این دو عملیات را با دو تابع جداگانه انجام بدید
به هر حال بهتره کد تابع رو بذارید شاید دوستان راهنمایی کنند

binyaft
پنج شنبه 04 شهریور 1389, 14:14 عصر
کار شما پایه ای مشکل دارد
بهتر است این دو عملیات را با دو تابع جداگانه انجام بدید
به هر حال بهتره کد تابع رو بذارید شاید دوستان راهنمایی کنند
کار من پایه ای مشکل داره؟؟؟ یعنی چی
مگه شما کد منو دیدید :لبخندساده:
تابع کدی نداره که بعد چک کردن متغییر از نظر امنیت و درستی میبرش به کئوری

bestirani2
پنج شنبه 04 شهریور 1389, 14:26 عصر
خوب اگر قرار بود این کا رو بکنم برای چی OR گذاشتم ؟؟؟؟؟
چه ربطی به or گذاشتن داشت؟

صابر طهماسبی
پنج شنبه 04 شهریور 1389, 14:36 عصر
کار من پایه ای مشکل داره؟؟؟ یعنی چی
مگه شما کد منو دیدید :لبخندساده:
تابع کدی نداره که بعد چک کردن متغییر از نظر امنیت و درستی میبرش به کئوری
از query پیداست که ساختار جدول user موجب افزونگی داده می شود
برای همین گفتم که پایه ی کار مشکل دارد.

اما راجع به اینکه فرمودید باگ ایجاد می کند باید خطایی را که مفسر php به شما می دهد اینجا بذارید تا دقیقا مشخص شود ایراد کجاست.

binyaft
پنج شنبه 04 شهریور 1389, 16:16 عصر
از query پیداست که ساختار جدول user موجب افزونگی داده می شود
برای همین گفتم که پایه ی کار مشکل دارد.

اما راجع به اینکه فرمودید باگ ایجاد می کند باید خطایی را که مفسر php به شما می دهد اینجا بذارید تا دقیقا مشخص شود ایراد کجاست.

من که بالا توضیح دادم این باگ ربطی به مفسر پی اچ پی نداره کاربر رو اشتباه میکشه بیرون
در ضمن برای OR هم بگم که من ورود تابع رو میگیریم
به هر کاربر یه ای دی و یه نام کاربری دادم حالا اگر نام کاربری با ورودی تابع یکی بود کاربر انتخاب میشه و یا اگر ای دی ورورد با ای دی کاربر

bestirani2
پنج شنبه 04 شهریور 1389, 17:14 عصر
من که بالا توضیح دادم این باگ ربطی به مفسر پی اچ پی نداره کاربر رو اشتباه میکشه بیرون
در ضمن برای OR هم بگم که من ورود تابع رو میگیریم
به هر کاربر یه ای دی و یه نام کاربری دادم حالا اگر نام کاربری با ورودی تابع یکی بود کاربر انتخاب میشه و یا اگر ای دی ورورد با ای دی کاربر
اصلاً منظورت رو نمیفهمم
از یک الگوی بانک اطلاعاتی استفاده کن

صابر طهماسبی
پنج شنبه 04 شهریور 1389, 19:08 عصر
من که بالا توضیح دادم این باگ ربطی به مفسر پی اچ پی نداره کاربر رو اشتباه میکشه بیرون

بزرگوار چطور ربطی به مفسر php نداره؟
وقتی شما اسکریپتو تست می کنید در واقع دارید از مفسر php استفاده می کنید.اصلا php بدون مفسر چطور اجرا میشه؟

جمله "کاربر رو اشتباه میکشه بیرون" رو متوجه نشدم


از یک الگوی بانک اطلاعاتی استفاده کن
منظور من هم دقیقا همینه

binyaft
پنج شنبه 04 شهریور 1389, 19:56 عصر
بزرگوار چطور ربطی به مفسر php نداره؟
وقتی شما اسکریپتو تست می کنید در واقع دارید از مفسر php استفاده می کنید.اصلا php بدون مفسر چطور اجرا میشه؟
اخه اینجا مفسر داره کارشو درست انجام میده
منظورم از اشتباه بیرون کشیدن کاربر اینه که من یه کاربر بهش میدم مثلا با این نام 2ta و بجای اینکه 2ta رو بکشه بیرون reza رو میکشه بیرون جدول های بانک اطلاعاتی هم درسته

امیـرحسین
پنج شنبه 04 شهریور 1389, 21:23 عصر
همونطور که گفتند چنین ساختاری اصلا جالب نیست ولی در حالت کلی از تابع is_nummeric می تونید استفاده کنید:
if(is_numeric($username))
$where = 'id=' .intval($username);
elseif(is_string($username))
$where = 'username="' .mysql_real_escape_string($username). '"';
else
$where = 'FALSE';

$sql = "SELECT * FROM table WHERE $where";

binyaft
جمعه 05 شهریور 1389, 10:28 صبح
عوضش کنم بهتره؟؟؟