• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ثبت اطلاعات در پایگاه داده
#1
سلام
تابع پایین رو واسه وارد کردن سفارشات تو پایگاه داده نوشتم
کد پی‌اچ‌پی:
function insert_order($order_details)
{
global 
$connection;

extract($order_details);

    if ((!
$ship_name ) && (!$ship_address) && (!$ship_city) && (!$ship_state) && (!$ship_zip) && (!$ship_country)){
        
$ship_name $name;
        
$ship_address $address;
        
$ship_city $city;
        
$ship_state $state;
        
$ship_zip $zip;
        
$ship_country $country;
    }
    
$query " SELECT customerid ";
    
$query .= " FROM customers ";
    
$query .= " WHERE name= " .$name"";
    
$query .= " AND address= " .$address" AND city= " .$city" AND state= " .$state" AND zip= " .$zip" AND country= " .$country"";
    
$result mysql_query($query$connection);
    
$num_rows mysql_num_rows($result);
    if(
$num_rows 0) {
        
$customer mysql_fetch_object($result);
        
$customerid $customer->customerid;
    }
    else{
        
$query " INSERT INTO customers ";
        
$query .= " VALUES('','$name','$address','$city','$state','$zip','$country')";
        
$result =mysql_query($query$connection);
        if (!
$result){
            return 
false;
        }
    }
    
$customerid $connection->insert_id;

ولی دوتا error داره:
1. mysql_num_rows() expects parameter 1 to be resource, boolean given
2. Trying to get property of non-object in last line
من قبلا num_rows رو همینطوری استفاده کردم،جوابم گرفتم.نمیفهمم چرا اینبار error میده؟؟
سفارشها وقتی تو پایگاه داده ثبتم میشه کاربر یکسان واسه هر خرید id جدید دریافت میکنه،که نباید اینطوری باشه.
راهنمایی کنید لطفا
  پاسخ
تشکر شده توسط :
#2
وقتی این اتفاق می افته که کوئری شما خطا بر می ردونه (false)
کوئری رو پرینت کن و توی phpmyadmin بزن ببین چه خروجی میگیری
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط :
#3
وقتی که یکی از فیلدها خالی باشه کدها درست اجرا میشن،هیچ تغییری تو دیتابیس نداریم و پیغام خطا به درستی به کاربر نشون داده میشه و ظاهرا همه چی درست به نظر میاد.
ولی...
وقتی همه فیلدها تکمیل میشه هم خطای num_rows رو دارم ، هم به کاربر پیام داده میشه که سفارش نمیتونه در دیتابیس ذخیره بشه اما phpMyAdmin رو که چک میکنم سفارش با id جدید ثبت شده؟؟
  پاسخ
تشکر شده توسط :
#4
من نگفتم که تو دیتابیس ثبت شده یانه
این اصلن مهم نیست
شما باید ببینی چه کوئری یی می زنی

کد پی‌اچ‌پی:
$query " SELECT customerid ";
    
$query .= " FROM customers ";
    
$query .= " WHERE name= " .$name"";
    
$query .= " AND address= " .$address" AND city= " .$city" AND state= " .$state" AND zip= " .$zip" AND country= " .$country"";
....
    
$result mysql_query($query$connection); 
به جای ... کوئری رو چاپ کن و اون کوئری رو که چاپ شده کپی کن توی phpmyadmin
ببین چیزی بر می گردونه یا نه
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط : Maysam.m
#5
همیشه برای دیباگ کوئری بهتره کوئری نهایی رو چاپ کنی و توی phpmyadmin بزنی ببینی مشکلش کجاست
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط : maynoush
#6
#1064 - 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 'number 234 AND city= tehran AND state= tehran AND zip= 987654321 AND country= Iran' at line 1
این خطا رو میده
میدوم که این خطا وقتی میاد که:
1.از کلمات کلیدی استفاده کرده باشم.
2.انواع دادهای اشتباه تو فیلدها گذاشته باشم.مثلا اینکه متن رو تو فیلد عددی گذاشته باشم.
3.از دستورات تاریخ گذشته استفاده کرده باشم.

فیلد address رو از نوع char تعریف کردم.میتونه به این خاطر باشه؟؟
فاصله ای که بین کلمات گذاشتم میتونه مشکل زا باشه؟؟
  پاسخ
تشکر شده توسط :
#7
مقادیر غیر عددی رو توی کوتیشن بزار
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط : maynoush
#8
(۱۳۹۳ آبان ۱۶, ۰۶:۵۲ ب.ظ)molana نوشته: مقادیر غیر عددی رو توی کوتیشن بزار

تمام مقادیر رئ با سینگل کوتیشن (Single Quotation) نقل قول (Quote) کن!
  پاسخ
تشکر شده توسط : maynoush
#9
مرسی دوستان
مشکل کوئری رفع شد ولی هنوز دیتا بیس مقادیر غلط نشون میده.
وقتی همه فیلدها تکمیل میشه به کاربر پیام داده میشه که سفارش نمیتونه در دیتابیس ذخیره بشه اما phpMyAdmin رو که چک میکنم سفارش با id جدید ثبت شده؟؟
یک کاربر مشخص واسه هر بار سفارش یک id جدید میگیره
من تمام سفارش های table customers رو پاک کردم ولی هنوز id ها از ادامه عددهای قبلی میاد.چیکار کنم صفر بشه؟
  پاسخ
تشکر شده توسط :
#10
از این کد استفاده کن :
کد پی‌اچ‌پی:
ALTER TABLE `table_nameAUTO_INCREMENT=
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان