• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کلاس پایگاه داده
#1
سلام دوستان
میخوام یه کلاس کار با دیتابیس بنویسم
منتها وقتی داده ها و تیبل ها رو به صورت ارایه می فرستم مشکل جدا کردنش رو دادم من برای جدا کردن داده ها از , استفاده کردم ولی وقتی یکی از داده ها همراه خودش , داشته باشه کل سیستم بهم میریزه
کد زیر رو ببینید
کد پی‌اچ‌پی:
<?php
 



class dbconnect
{
public 
$dbhost="localhost",$dbname="test",$dbpass="",$dbuser="root",$error,$result,$fieldname,$field,$values;


function  
connection()
{
$connectionmysql_connect($this->dbhost,$this->dbuser,$this->dbpass) or die($this->seterror(mysql_error()));
mysql_select_db($this->dbname);
mysql_query("SET NAMES 'utf8'"$connection);mysql_query("SET CHARACTER SET utf8"$connection);
mysql_query("SET CHARACTER_SET_CONNECTION=utf8"$connection);
}
 function 
select($field)
 {
     
$conect$this->connection();
    
$conectmysql_query("select * from $field order by id desc") or die($this->seterror(mysql_error()));
    return 
$this->  result=$conect;
     
 }
 
 
 
 
 
 function 
seterror()
 {
     
$this->error;
     return 
error;
 }
 
 function 
geterror()
 {
     echo 
$this->error;
 }
function 
setfield($field)
{
    
$num=count($field);

for(
$i=0;$i<$num;$i++)
{
    
$field2.=$field[$i].",";
    
}
return 
$this->field=$field2;
}
function 
setvalues($values)
{
    
$num=count($values);

for(
$i=0;$i<$num;$i++)
{
    
$values2.="'".$values[$i]."',";
    
}
return 
$this->values=$values2;
}
function 
setinsert()
{
    
    
$field=substr($this->field,0,-1);
$values=substr($this->values,0,-1);
$this->connection();

$sql=mysql_query("insert into user ($field) values($values)") or die($this->error=mysql_error());
if(
$sql)
{
    echo 
"داده اضافه شد";
}

    }


}
$new=new dbconnect();
$fi=array("ip","name","time");
$new->setfield($fi);
$fo=array("gdf","fbgdf","1:53");
$new->setvalues($fo);
$new->setinsert();
$new->error;


?>
کسی نظری نداره ... می دونم کلاس های اماده ی زیادی وجود داره ولی دوس دارم خودم تجربه کنم
  پاسخ
تشکر شده توسط :
#2
داداش خوب چرا از PDO استفاده نمی کنی. خیلی راحت استاندارد و آماده هست. وقتت را روی چیز های مهمتر و بهتر بزار.WinkCool
http://shgn.ir/pdo/
http://php.net/manual/en/book.pdo.php
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط : farhadfery
#3
همون اول حرفام گفتم که نمی خوام به کلاس های دیگه نگاه کنم یا ازشون استفاده کنم ... دوس داشتم این کلاسو خودم بنویسم
ممنون
  پاسخ
تشکر شده توسط :
#4
PDO به خودی خود اونقدر ها هم لقمه آماده نیست که شما برش داری استفاده کنی و هیچ نیازی رو نداشته باشید از اونجا به بعد. به عنوان مثال یکی از مشکلاتش اینه که کوئری رو تا زمانی که ارسال نکردی به دیتابیس نمی تونی بفهمی چیه دقیق. یه سری روش هایی هست مثلا استفاده از debugDumpParams برای رسیدن به کوئری اما خب کامل نیست همونطور که گفتم. و البته مزیت استفاده از PDO هم آماده بودنش نیست. از مزایای PDO می شه به نام گذاری پارامتر ها و مپ کردن شی اشاره کرد. همینطور لازم نیست دیگه اسکیپ کنید کارکتر هارو چون خودش اینکارو می کنه و شما در مقابل حملات sql injection مقاوم تر خواهید شد. و اینکه وقتی از PDO استفاده می کنید مهم نیست که دیتابیس چیه، خیلی راحت می تونید از دیتابیس های مختلف استفاده کنید و احتمال زیاد مشکلی نخواهد بود مگر یه مقدار تنظیمات بیشتر به عنوان مثال در PostgreSQL یه کوئری بیشتر لازمه اگر از schema غیر از public استفاده کرده باشید. PDO ضعف هایی هم داره مثلا اینکه از توابع mysql یه مقدار سرعت کمتری داره اما خب اونقدر لامس نخواهد بود.

اما مشکل شما ، بهتره از تابع implode استفاده کنید تا دیگه لازم نباشه موقع اجرای کوئری با substr آخرین , رو حذف کنید.
تابع connection هیچ وقت چک نمی کنه ببینه آیا کانکشن قبلی هنوز زندست یا نه، بهتره که این کارو بکنه و اگر کانکشن قبلی که ساخته هنوز زندست اونو برگشت بده بجای اینکه هربار کانکشن بسازه.
توی فیلد هاتون فیلدی دارید به نام time که اگه اشتباه نکنم جزو کلمات کلیدی mysql هست. اما چه بهتر که از "`" استفاده کنید همیشه برای نام فیلد هاتون. بدین صورت
کد:
`myfield`,`myfield2`
در ضمن شما ورودی رو escape نمی کنید که این اصلا خوب نیست.
این کارهارو انجام بدید اگر باز هم مشکلی بود خطایی که میگیرید و کوئری رو بزارید اینجا تا بهتر بتونیم کمک کنیم.

پ.ن : بعد از اینکه خودتون کلاس دلخواهتون رو نوشتید و متوجه شدید که جریان چیه بهتر هست که از PDO استفاده کنید نه به این صورت که فقط از اون کلاس استفاده کنید. کلاسی بنویسید که از کلاس PDO ارث بری کنه اما کار هایی که شما می خواهید رو انجام بده براتون. اگر دوست نداشتید هم مشکل خاصی پیش روتون نیست.
  پاسخ
تشکر شده توسط : shgninc M.J mehdibaghi
#5
(۱۳۹۲ آبان ۱۱, ۰۶:۰۸ ب.ظ)masiha68 نوشته: همون اول حرفام گفتم که نمی خوام به کلاس های دیگه نگاه کنم یا ازشون استفاده کنم ... دوس داشتم این کلاسو خودم بنویسم
شما خودت کلاس را بنویس، کسی مانع نیست که، ولی میگم بهتره نیست که وقتت را هدر ندی و بری سراغ چیزهای مهمتر. فکر کنم اگر توی github یا phpclasses بگردی خیلی از جور کلاس ها گیر بیاری، چه اصراری دارید که چرخ را اول اختراع کنید، به قول دوستمان همین PDO هم واسه خودش خیلیه، چرا سعی نمی کنید با اون کار کنید، اتفاقا کامل هم OO هست تازه اگر بخواهید فکر کنم بتونید توسعه اش هم بدید.WinkCool
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط : M.J
#6
بنظر من هم اول شی گرایی رو درک کن بعد همونطور که محمد گفت با pdo کلاس خودت رو بنویس یک کلاس خیلی جامع که نیازهات رو مرتفع کنه
اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی دیگه در مورد آزادی شعار نده !
آلبر کامو
  پاسخ
تشکر شده توسط :
#7
سلام به گروه ایران پی اچ پی
یه سئوال از شما دارم .
من برای یکی از مداحا سایت طراحی کردم به راحتی سایتو آپلود کردم تو اینترنت ولی نمی دانم کجا دیتا بیسو آپلود کنم .
من از شما تقاضا دارم و ازتون خواهش میکنم هر چه زود تر بهم کمکم کنید .
با تشکر[/size]
  پاسخ
تشکر شده توسط :
#8
شما یه سایت طراحی کردی اونوقت با اپلود دیتابیس مشکل داری ... !!!!!!
شما مشکلتون دقیقا اینکه نمی دونین چه جوری تو یphpmyadmin دیتابیس رو اپ کنین ؟؟؟ یه سرچ بزنین کلی مطلب هست
  پاسخ
تشکر شده توسط :
#9
خبم بلدم از پی اچ پی مای ادمین چه شکلی استفاده کنم ولی بلدنیستم دیتابیسو آپلود کنم لطف کن کمکم کن

در ضمن اولین بارم سایت طراحی کردم و آپلود می کنم به خاطر همینه که بلد نیستم
همیشه بزرگ ترها گفتن سئوال پرسیدن عیب نیست اونی که ندونی عیبه
  پاسخ
تشکر شده توسط : shgninc
#10
خب برو روی قسمت import و از اونجا فایل دیتابیستو انتخاب کن و بعد اپلود میشه ... البته میشه از قسمت پایگاه داده هم همین کارا رو کرد و فک کنم اونجا واستون راحت تر باشه
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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