مشکل به رور رسانی پرس و جو با PHP PDO

- 2 هفته پیش
توسط Alimotreb آپدیت شد
رایموند دراگون ( 35538 تجربه )
2 هفته پیش

درود دوستان...
می خوام اطلاعاتی که ارسال شده را ویرایش و به روز رسانی کنم ولی کد زیر کار نمی کند:
مشکل کجاست؟

<?php
require_once'db.php';

if (isset($_POST['update'])) {

    // مقدار پست ها

    $title=$_POST['title'];
    $buy=$_POST['buy'];
    $shop=$_POST['shop'];
    $num=$_POST['num'];
    $color=$_POST['color'];
    $war=$_POST['war'];
    $cat=$_POST['cat'];
    $des=$_POST['des'];

    // درخواست برای افزودن

    $sql = "UPDATE products SET title = :title, buy = :buy, shop = :shop, num = :num, color = :color, war = :war, cat = :cat, des = :des WHERE id = :id";

    // درخواست برای اجرای پرس و جو

    $query = $con->prepare($sql);

    // بستن پارامترها

    $query->bindValue(':title',$title);
    $query->bindValue(':buy',$buy);
    $query->bindValue(':shop',$shop);
    $query->bindValue(':num',$num);
    $query->bindValue(':color',$color);
    $query->bindValue(':war',$war);
    $query->bindValue(':cat',$cat);
    $query->bindValue(':des',$des);

    // اجرای درخواست

    $query->execute();

    // این بخش در ثبت شدن اطلاعات و نشدن آن بررسی می کند.

    $lastUpdateId = $con->lastIUpdateId();

    if ($lastUpdateId) {

        echo "<div class='alert alert-success'>اطلاعات شما با موفقیت ویرایش شد</div>";
    }else{

        echo "<div class='alert alert-danger'>خطا در ویرایش اطلاعات</div>";
    }
}

try{
    $sql = "SELECT * FROM categories";
    }catch(Exception $ex){
        $ex->getMessage();
    }

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>افزودن محصول</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-rtl.min.css">
</head>
<body>
    <div class="container py-2">
        <div class="row">
            <div class="col-md-5 mx-auto">
                <form action="" method="post">
                    <div class="form-group">
                        <label for="Input1">نام محصول</label>
                        <input type="text" name="title" value="<?php echo $title;?>" class="form-control" id="Input1" placeholder="">
                    </div>
                    <div class="form-group">
                        <label for="Input2">قیمت (تومان)</label>
                        <input type="text" name="buy" value="<?php echo $buy;?>" class="form-control" id="Input2" placeholder="">
                    </div>
                    <div class="form-group">
                        <label for="Input3">فروش (تومان)</label>
                        <input type="text" name="shop" value="<?php echo $shop;?>" class="form-control" id="Input3" placeholder="">
                    </div>
                    <div class="form-group">
                        <label for="Input4">تعداد محصول</label>
                        <input type="text" name="num" value="<?php echo $num;?>" class="form-control" id="Input4" placeholder="">
                    </div>
                    <div class="form-group">
                        <label for="Input5">رنگ محصول</label>
                        <input type="text" name="color" value="<?php echo $color;?>" class="form-control" id="Input5" placeholder="">
                    <div class="form-group">
                        <label for="Input6">گارانتی محصول</label>
                        <input type="text" name="war" value="<?php echo $war;?>" class="form-control" id="Input6" placeholder="">
                    </div>
                    <div class="form-group">
                        <label for="Select1">انتخاب انبار محصول</label>
                        <select class="form-control" id="Select1" name="cat" value="<?php echo $cat;?>">
                            <option>انتخاب دسته</option>
                            <?php foreach($con->query($sql) as $output) {?>
                                <option><?php echo $output["title"];?></option>
                            <?php } ?>
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="Textarea1">توضیحات محصول</label>
                        <textarea class="form-control" name="des" value="<?php echo $des;?>" id="Textarea1" rows="3"></textarea>
                    </div>
                    <button type="submit" name="update" class="btn btn-success">ثبت محصول</button>
                    <a href="index.php" class="btn btn-success">صفحه اصلی</a>
                </form>
            </div>
        </div>
    </div>
</body>
</html>
بهترین پاسخ انتخاب شده توسط رایموند دراگون
Alimotreb
2 هفته پیش

سلام
@RaymondDragon

هم میتونید مقادیر رو توی execute بدید

 $query->execute($data);

که این دیتا میتونه یه آرایه باشه از دیتا ها

$data = [
    'buy' => $buy,
    'shop' => $shop,
    'num' => $num,
];

این یه روش
ولی مشکل کد شما اینه که توی قسمت Bind ها

$query->bindParam("category" , $category);

BindParam بنویسید
تو مقادیر ورودیشم 2 نقطه نذارید!

این اشتباهه

    $query->bindValue(':shop',$shop);

درست این هست

$query->bindParam("shop" , $shop);

امید وارم تونسته باشم کمکی کنم

Alimotreb ( 24787 تجربه )
2 هفته پیش

سلام
@RaymondDragon

هم میتونید مقادیر رو توی execute بدید

 $query->execute($data);

که این دیتا میتونه یه آرایه باشه از دیتا ها

$data = [
    'buy' => $buy,
    'shop' => $shop,
    'num' => $num,
];

این یه روش
ولی مشکل کد شما اینه که توی قسمت Bind ها

$query->bindParam("category" , $category);

BindParam بنویسید
تو مقادیر ورودیشم 2 نقطه نذارید!

این اشتباهه

    $query->bindValue(':shop',$shop);

درست این هست

$query->bindParam("shop" , $shop);

امید وارم تونسته باشم کمکی کنم

رایموند دراگون ( 35538 تجربه )
2 هفته پیش

@Alimotreb
ممنون از جوابت.. اما زودتر این مشکل رو حل کردم...
متاسفانه راکت دکمه حذف سوال نداره که سوالی که مطرح کردم رو حذف کنم چون زودتر به جوابت رسیدم...

Alimotreb ( 24787 تجربه )
2 هفته پیش

سلام
@RaymondDragon

خواهش میکنم دوست من
درست میگید
این قابلیت رو نداره. انشالا در آینده اضافه بشه.

برای ارسال پاسخ باید وارد سایت شوید