PDA

View Full Version : سوال: delete از جدول در my sql



sajad prm
شنبه 16 بهمن 1389, 01:29 صبح
با سلام
اگر ما بخواهیم مقداری رو از جدولم پاک کنم ولی اون مقدار در بانک نباشد و بخواهیم به کاربر نشون بدم چه کدی باید بنویسم ؟
با تشکر

mohsen6500
شنبه 16 بهمن 1389, 01:44 صبح
سلام
خوب قبلش یه کویری بگیر اگر بود پاکش کن وگرنه اخطار بده که همچین چیزی نیست
موفق باشی

رضا قربانی
شنبه 16 بهمن 1389, 03:24 صبح
با سلام
اگر ما بخواهیم مقداری رو از جدولم پاک کنم ولی اون مقدار در بانک نباشد و بخواهیم به کاربر نشون بدم چه کدی باید بنویسم ؟
با تشکر

دوست من برای مثال اگر در بانکتون جدولی به نام tbl_value داشته باشید که فیلدی به نام value و بخوایید مقدار آن را حذف نمایید با این مثالی که براتون نوشتم می تونید به جوابتون برسید




//////////اتصال به بانک ////////
global $dbhost,$dbname,$dbuser,$dbpass,$tbl_name,$gdate2,
$gdate,$op;

$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
/////////// بعد از اینکه به بانکتون وصل شدید


if(mysql_affected_rows($link)>0)
{
$value=$row['value'];
if($value)
{
$sql1="delete from tbl_value where id=$id";
$result1=mysql_query($sql1,$link);
$row=mysql_fetch_array($result);
)
else
{
echo'mojood nist';
}
}

MMSHFE
شنبه 16 بهمن 1389, 08:24 صبح
با سلام، دوست گرامي اين راه رو امتحان كنيد:


<?PHP
mysql_connect('localhost','root','');
mysql_select_db('db');
$result=mysql_query("delete from `table` where (`id`='$id')");
switch(mysql_affected_rows())
{
case -1:
echo(mysql_error());
break;
case 0:
echo('Not found.');
break;
default:
echo(mysql_affected_rows().' row(s) deleted.');
break;
}
?>

البته اين فقط يك مثاله و به احتمال زياد نام كاربر، سرور، رمز عبور، بانك اطلاعاتي، جدول و حتي شرط حذف و اسامي فيلدهاي شما با مقاديري كه من نوشتم فرق ميكنه و بايد از اونها استفاده كنيد. نكته مهم در كد فوق، نحوه استفاده از mysql_affected_rows هست كه اگه دستور اشكال داشته باشه، 1- و اگه هيچ ركوردي تغيير نكنه، 0 و در غير اينصورت تعداد ركوردهاي تحت تأثير دستور رو بر ميگردونه.
موفق و مؤيد باشيد.

رضا قربانی
شنبه 16 بهمن 1389, 16:39 عصر
با سلام، دوست گرامي اين راه رو امتحان كنيد:


<?PHP
mysql_connect('localhost','root','');
mysql_select_db('db');
$result=mysql_query("delete from `table` where (`id`='$id')");
switch(mysql_affected_rows())
{
case -1:
echo(mysql_error());
break;
case 0:
echo('Not found.');
break;
default:
echo(mysql_affected_rows().' row(s) deleted.');
break;
}
?>

البته اين فقط يك مثاله و به احتمال زياد نام كاربر، سرور، رمز عبور، بانك اطلاعاتي، جدول و حتي شرط حذف و اسامي فيلدهاي شما با مقاديري كه من نوشتم فرق ميكنه و بايد از اونها استفاده كنيد. نكته مهم در كد فوق، نحوه استفاده از mysql_affected_rows هست كه اگه دستور اشكال داشته باشه، 1- و اگه هيچ ركوردي تغيير نكنه، 0 و در غير اينصورت تعداد ركوردهاي تحت تأثير دستور رو بر ميگردونه.
موفق و مؤيد باشيد.

دوستمون گفت اگر در رکوردی برای جدولی درج نشده باشه پیامی بده و اگر هم بود پاک کنه-

شما اول رکورد رو پاکش کردید - چه بود و چه نبود ( باید داخل شرط قرار بگیره که من براتون انجامش دادم- اگر رکوردی وجود داشت پاک کنه وگرنه ....)

MMSHFE
یک شنبه 17 بهمن 1389, 09:14 صبح
با سلام، دوست گرامي چه فرقي داره؟ دستور Delete اگه نتونه ركوردي رو پاك كنه (چه ركورد وجود نداشته باشه و چه اينكه شرط WHERE با هيچ ركوردي مطابقت نكنه كه پاكش كنه)، باعث ميشه كه mysql_affected_rows تعداد صفر رو برگردونه. ضمناً ميشه توضيح بدين mysql_affected_rows وقتي هنوز هيچ دستور ويرايشي مثل update يا delete يا... رو اجرا نكردين، تعداد ركوردهاي تحت تأثير كدوم دستور رو برميگردونه؟ اصلاً چي برميگردونه وقتي هنوز دستوري اجرا نشده؟ لطفاً به مستندات PHP.NET توجه كنيد:
mysql_affected_rows (http://ir.php.net/manual/en/function.mysql-affected-rows.php)
Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE query associated with link_identifier.
موفق و مؤيد باشيد.

رضا قربانی
یک شنبه 17 بهمن 1389, 09:30 صبح
این شرط if(mysql_affected_rows($link)>0) کار case شما رو انجام می ده


برای کسانی که دارن تازه شروع می کنن بهتره که یه کم واضحتر یاد بگیرن( البته این دوستمون که تاپیک زد ، فکر کنم خودش رفته و سایت رو گم کرده :لبخند: )


ممنون از لینکی که بهم معرفی کردید . استفاده خواهم کرد.

موفق باشید دوست من