Ошибка Notice при отправке данных в бд [php, ajax, PDO]

isValue

Новичок
Всем привет! Вылазит ошибка при отправки данных с формы в бд.

PHP:
Notice: Undefined index: set in F:\OSPanel\domains\localhost\engine\Core\Database\QueryBuilder.php on line 114
в querybuilder, на 114 строке функция set:

PHP:
public function set($data = [])
{
$this->sql['set'] .= "SET ";

if(!empty($data)) {
foreach ($data as $key => $value) {
$this->sql['set'] .= "{$key} = ?";
if (next($data)) {
$this->sql['set'] .= ", ";
}
$this->values[] = $value;
}
}

return $this;
QueryBuilder точно работает, здесь ошибки нет. Из другой страницы проходит подобный запрос через эту же функцию успешно.
Массив с формы доходит до set($array) и возникает ошибка.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Мы за тебя отладкой должны заниматься?

Нельзя конкатенировать что-то к строке, если ее еще не существует.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Строку 114 покажи, потом убедишься, что ты не прав
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@isValue, у тебя она не инициализирована, то есть сделай так: поставь перед ней такую строку:
$this->sql['set'] = '';
 

isValue

Новичок
@isValue, у тебя она не инициализирована, то есть сделай так: поставь перед ней такую строку:
$this->sql['set'] = '';
и получается что
PHP:
public function insert($table)
{
    $this->reset();
    $this->sql['insert'] = "INSERT INTO {$table} ";

    return $this;
}
потом присоединяется к моей строке
 

isValue

Новичок
@c0dex, var_dump показывает:
PHP:
<b>Notice</b>:  Undefined index: set in <b>F:\OSPanel\domains\localhost\engine\Core\Database\QueryBuilder.php</b> on line <b>114</b><br />
object(Engine\Core\Database\QueryBuilder)#33 (2) {
  ["sql":protected]=>
  array(2) {
    ["insert"]=>
    string(17) "INSERT INTO user "
    ["set"]=>
    string(21) "SET email = ?, pass = ?"
  }
  ["values"]=>
  array(2) {
    [0]=>
    string(0) ""
    [1]=>
    string(0) ""
  }
}
<br />
<b>Fatal error</b>:  Uncaught Error: Call to a member function sql() on null in F:\OSPanel\domains\localhost\engine\Core\Database\ActiveRecord.php:79
Stack trace:
 
Последнее редактирование:

isValue

Новичок
@c0dex, спасибо, ошибку нашёл. Ошибка в POST поле была, приходило пустое поле в SET.
 
Сверху