Nano Hash - криптовалюты, майнинг, программирование

Данные php mysql pdo bindparam не вставляются

Когда я вызываю эту функцию, она не показывает ошибки, но данные не вставлены. Соединение с базой данных проверено и все в порядке, тип соединения PDO.

public function insert(){
    $table  = "category";
    $data   = array(
        'cat_id'    => 5, 
        'cat_name_en'   => 'Science', 
        'cat_info'  => 'All about nature', 
        'cat_tags'  => 'Physics, chemistry' 
        );
    $keys       = implode(', ', array_keys($data));
    $values     = ":".implode(", :", array_keys($data));
    echo $sql   = "INSERT INTO $table($keys) VALUES($values)";
    $stmt       = $this->db->prepare($sql);
    foreach ($data as $key => $value) {
        $stmt->bindParam(':'.$key, $value);
    }
    return $stmt->execute();

}

Соединение с базой данных в порядке. Потому что он работает с запросами SELECT и DELETE, но не работает с запросами INSERT и UPDATE. Мне не нужна альтернатива, но я хочу, где моя ошибка. Помогите пожалуйста мне. Пытаюсь решить 2 дня.

Windows 10 64-разрядная
WampServer 3.0.8
PHP 7.1
MySQL 5.7



Ответы:


1

Вам нужно bindValue() вместо bindParam(). Измените цикл foreach на

foreach ($data as $key => $value) {
        $stmt->bindValue(':'.$key, $value);
    }

См. документ:

http://php.net/manual/en/pdostatement.bindvalue.php

См. разницу здесь: В чем разница между bindParam и bindValue?

10.09.2017
  • попробуйте распечатать ошибку print_r($stmt->errorInfo()); после выполнения 10.09.2017
  • Спасибо. Проблема решена. Это будет bindValue(). 10.09.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..