Я использую MySqli для вставки фрагмента содержимого страницы в базу данных в таблице content
со следующими столбцами: id
, name
, content
, parent
, order
, где содержимое имеет тип TEXT
. Однако проблема заключается в том, что при выполнении оператора вставки он вставляет новую запись в таблицу, но не вставляет значения content
и parent
, в то время как правильно вставляет значения name
и order
. Я проверил возвращаемые значения всех функций подготовки, и все они вернули true или не выдали ошибок, поэтому я очень запутался в том, что происходит.
Свойства класса ($this->Content
и $this->Parent
) заполнены и содержат правильные данные. Кроме того, часть функции update/edit
работает просто отлично (поскольку подготовленная функциональность обеих этих частей совершенно одинакова, это странная ошибка).
Это код, который выполняет запросы. переменная $type
может принимать два значения: edit
или new
, и когда ее new
, она не работает должным образом.
public function Save($type)
{
if($type == "edit")
{
$query = "UPDATE `content` SET `name` = ?, `content` = ?, `parent` = ? WHERE `id` = ?";
$stmt = $this->sql->prepare($query);
$stmt->bind_param("ssii", $this->Name, $this->Content, $this->Parent, $this->ID);
}
else if ($type == "new")
{
$query = "INSERT INTO `content`(`name`, `parent`, `content`, `order`) VALUES(?, ?, ?, 999)";
$stmt = $this->sql->prepare($query);
$stmt->bind_param("ssi", $this->Name, $this->Content, $this->Parent);
}
if(!$stmt->Execute())
echo "Failed saving content-object with ID $this->ID" . mysqli_error($this->sql);
$stmt->close();
}
Я понятия не имею, почему часть edit
работает отлично, а часть new
— нет. Запрос действительно вставляет новую строку с правильным именем и значениями порядка, поэтому я предполагаю, что это как-то связано с функцией bind_param
. Строка в базе данных всегда имеет значение 0
как для content
, так и для parent
.
if
вокруг `$stmt-›Execute()` тогда - person Your Common Sense   schedule 12.04.2014