Запрос не вставляет значение в БД

1

В моем запросе инструкция обновления не работает, указанная ошибка:

Номер параметра не соответствует подготовленному оператору

это мой код:

public function update_resource($resource)
{
    $mysqli = new MySQLi(HOST, USERNAME, PASSWORD, DATABASE);

    $this->connection_state($mysqli); 

    $id = $resource['id'];
    $descrizione = $resource['descrizione'];
    $sigla =       $resource['sigla'];
    $colore =      $resource['colore'];
    $planning =    $resource['planning'];

    try
    {   
        $query =    "UPDATE risorse SET descrizione = '$descrizione'
                        AND sigla = '$sigla' AND colore = '$colore' AND planning = '$planning'
                        WHERE id = '$id' ";

        $stmt = $mysqli->prepare($query);
        $stmt -> bind_param("ssssi", $descrizione, $sigla, $colore, $planning, $id);
        echo $query;

        if($stmt->execute())
        {
            echo "Added!";
        }
        else
        {
            echo "Err: " . $stmt->error;    
        }

    }catch(Exception $e){   echo $e->getMessage();      }

}

Код переходит в Added условие, но запрос не работает, какая проблема?

  • 0
    Это должно быть $ query = "ОБНОВЛЕНИЕ ресурсов UPDATE описание = ?, Сокращение = ?, Цвет = ?, Планирование =? WHERE id =?";
Теги:

3 ответа

2
Лучший ответ
public function update_resource($resource)
{
    $mysqli = new mysqli(HOST, USERNAME, PASSWORD, DATABASE);

    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

    $id = $resource['id'];
    $descrizione = $resource['descrizione'];
    $sigla =       $resource['sigla'];
    $colore =      $resource['colore'];
    $planning =    $resource['planning'];

    try
    {   
        $query =    "UPDATE risorse SET descrizione = '$descrizione'
                        , sigla = '$sigla', colore = '$colore', planning = '$planning'
                        WHERE id = '$id' ";

        $stmt = $mysqli->prepare($query);
        $stmt -> bind_param($descrizione, $sigla, $colore, $planning, $id);
        echo $query;

        if($stmt->execute())
        {
            echo "Added!";
        }
        else
        {
            echo "Err: " . $stmt->error;    
        }

    }catch(Exception $e){   echo $e->getMessage();      }

}?
0

посетите http://php.net/manual/en/pdostatement.bindparam.php.You получил ваш ответ. Пример # 1 Выполните подготовленное выражение с именованными заполнителями

0

Ваша проблема в том, что у вас нет заполнителей в вашем запросе. Обратитесь к руководству, чтобы узнать, как должны быть установлены заполнители.

В общем, заполнители ? которые позже будут заменены значениями, поэтому ваш запрос должен выглядеть так:

$query = "UPDATE risorse SET descrizione = ?
                    AND sigla = ? AND colore = ? AND planning = ?
                    WHERE id = ?";
  • 0
    Теперь я немного заржавел, не могли бы вы показать мне, пожалуйста?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню