@lexstile

Почему не работает insert?

Запрос:
public function query($sql, $params = []) {
		$stmt = $this->db->prepare($sql);
		if (!empty($params)) {
			foreach ($params as $key => $val) {
				if (is_int($val)) {
					$type = PDO::PARAM_INT;
				} else {
					$type = PDO::PARAM_STR;
				}
				$stmt->bindValue(':'.$key, $val, $type);
			}
		}
		$stmt->execute();
		return $stmt;
	}

Вызов:
$params = [
			'id' => '',
			'name' => $post['name'],
			'description' => $post['description'],
		];
		$this->db->query('INSERT INTO events VALUES (:id, :name, :description)', $params); // print_r
		// PDOStatement Object
		// (
		//     [queryString] => INSERT INTO events VALUES (:id, :name, :description)
		// )
		return $this->db->lastInsertId();

Этот код работает:
public function row($sql, $params = []) {
		$result = $this->query($sql, $params); // query тот же
		return $result->fetchAll(PDO::FETCH_ASSOC);
	}
	return $this->db->row('SELECT * FROM events ORDER BY id DESC LIMIT :start, :max', $params);

Версия php: PHP/7.1.11
  • Вопрос задан
  • 929 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вангую, id у вас в базе имеет тип INT AUTO_INCREMENT, а вы пытаетесь записать в него пустую строку. Уберите id из запроса или используйте NULL вместо пустой строки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы