15-07-1395، 02:41 ق.ظ
در پروژه ی ablog برای ساخت کوئری insert با متد Prepared statements
به روش
تابع کوئری
تابع ساخت کوئری insert
تابع insert در کلاس Categories
محل استفاده
به روش
INSERT INTO `categories` ( title, urlkey, active ) VALUES ( ?, ?, ? )این ارور رو میده
نقل قول:وقتی هم ازWarning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
INSERT INTO `categories` ( title, urlkey, active ) VALUES (:title, :urlkey, :active)استفاده می کنم همه مقادیر جدول رو با 1 پر میکنه
تابع کوئری
public function query($query, $params = []) { $stmt = $this->con->prepare($query); foreach($params as $key => $value){ $stmt->bindparam($key, $value); } $stmt->execute(); return $stmt; }
تابع ساخت کوئری insert
public function insert($params) { $result = "INSERT INTO `{$this->tableName}` ("; foreach($params as $key => $value){ $result .= ' ' . $key .','; } $result = substr($result, 0, -1) . " ) VALUES ("; foreach($params as $key => $value){ $result .= ' ?,'; } $result = substr($result, 0, -1) . " )"; return $result; }
تابع insert در کلاس Categories
public static function insert($params = []) { $dal = new DAL(self::$tableName); $query = $dal->insert($params); $result = $dal->query($query, $params); return $result; }
محل استفاده
Categories::insert(['title' => $_POST['categoryName'], 'urlkey' => $_POST['urlKey'], 'active' => $_POST['activation']]