@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
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вангую, id у вас в базе имеет тип INT AUTO_INCREMENT, а вы пытаетесь записать в него пустую строку. Уберите id из запроса или используйте NULL вместо пустой строки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
09 апр. 2020, в 01:55
1500 руб./за проект
09 апр. 2020, в 01:27
1000 руб./за проект
08 апр. 2020, в 22:52
5000 руб./за проект