@N7EIght

Как решить проблему с данным запросом pdo?

Есть два варианта отправки запроса:

1)
$params = [
    'test' => $post['test'],
    'text' => $post['text'],
];

$query = $this->db->query('INSERT INTO test VALUES (:test, :text)', $params);


2)
$params = [
    'TITLE' => $post['title'],
    'STRUCTURE' => $post['structure'],
    'TEACHER' => $post['teacher'],
    'HANNIEL' => $post['hanniel'],
    'CLASS' => $post['class'],
    'DATE' => date("Y-m-d"),
    'TIME' => date("H:i:s"),
];

$query = $this->db->query('INSERT INTO structure VALUES (:TITLE, :STRUCTURE, :TEACHER, :HANNIEL, :CLASS, :DATE, :TIME)', $params);


Проблема заключается в том, что 1 вариант работает, а 2 вариант нет. Не могу понять из-за чего. Никакие ошибки не выводятся, выводится лишь то, что успешно отправлено и т.д. (сделал данный вывод), но в базе, при 2 варианте ничего не появляется.

Вот функция из класса bd, которой я пользуюсь:

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);
		}
	}
	$xxx = $stmt->execute();
	return $stmt;
}
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. Выкинуть на помойку бессмысленный код "функции класса bd" и написать заново
public function query($sql, $params = []) {
    $stmt = $this->db->prepare($sql);
    $stmt->execute($params);
    return $stmt;
}

2. В конструкторе класса bd соединение PDO создавать правильно, чтобы база данных могла тебе сказать человеческим голосом, что не так в запросе
3. осилить правильный синтаксис INSERT
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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