۱ alireza10up
فیلد‌ها در sql
جامعه پی اچ پی ایجاد شده در ۲۵ فروردین ۱۴۰۲

سلام وقت بخیر

من وقتی به کوئری پارام فیلد عدد میدم بعد درخواست همون اعداد رو دریافت میکنم راستش دلیلش رو متوجه نشدم .

1918-image.png

این هم کد شاید لازم شد

 public function getCities(array $data)
    {
        $this->province_id = $data['province_id'] ?? null;
        $this->page = $data['page'] ?? null;
        $this->page_size = $data['page_size'] ?? null;
        $this->fields = $data['fields'] ?? '*';
        if (!is_null($this->province_id) and is_numeric($this->province_id)) {
            $this->where = "WHERE province_id = {$this->province_id} ";
        }
        if ($this->page and $this->page_size) {
            $start = ($this->page - 1) * $this->page_size;
            $this->limit = "LIMIT {$start},{$this->page_size}";
        }
        try {
            $sql = "SELECT {$this->fields} FROM city {$this->where} {$this->limit}";
            $stmt = $this->pdo->prepare($sql);
            $stmt->execute();
            $result = $stmt->fetchAll(PDO::FETCH_OBJ);
            return $result;
        } catch (\\Throwable $th) {
            return null;
        }
    }

سلام علیرضا عزیز

این مورد در کوئری دیتابیس میشینه و باعث پیدا نشدن و برگردونده شدن همون عدد میشه.

وقتی شما در یک کوئری SELECT یک نام فیلد را وارد می‌کنید که در فیلدهای جدول موجود نیست، دیتابیس به صورت خودکار نام فیلد را به عنوان یک نام ستون جدید برای کوئری ایجاد می‌کند. این نام ستون جدید همان نامی است که شما وارد کرده اید.

این عملکرد از طرف دیتابیس به دلیل این است که در بعضی موارد، کاربران نیاز دارند تا در کوئری هایشان از نام‌های ستون هایی که در جداول موجود نیستند، استفاده کنند. به عنوان مثال، در صورتی که کاربران می‌خواهند کوئری‌های پویا و قابل تنظیمی را تولید کنند و داده هایی را که در زمان طراحی جدول در نظر نگرفته شده بودند را به کوئری خود اضافه کنند، این قابلیت بسیار مفید است.

شما یک آرایه با موارد فیلدهای جدول city ایجاد کنید و با تابع in_array چک کنید که ورودی کاربر در اون وجود داشته باشه تا این مشکل پیش نیاد.

بهترین پاسخ
احمدرضا فاطمی کیا ۲۵ فروردین ۱۴۰۲، ۱۹:۱۹