Поэтому благодаря предложениям пользователей здесь я начал переносить свой код на PDO. Все шло хорошо, пока не появился маленький вопрос.
У меня есть небольшая функция для обработки вызовов в базе данных, которая в основном генерирует SQL-запрос, выполняет команду $ dbh-> prepare ($ sql), затем выполняет цикл и связывает значения, а затем выполняет запрос.
$sth = $dbh->prepare ($sql); // bind parameters if ($action == 'insert' || $action == 'update') { reset ($array); foreach ($array as $key => &$value) { if ($value != 'NOW()') { $sth->bindParam (':' . $key, $value); } } } $sth->execute();
Это работает отлично, пока мне не нужно вставить значение «0». Ошибки не возвращаются, но значение, которое вставлено в db, оказывается максимальным значением для типа столбца в таблице, в данном случае это «137».
Я бы предпочел, чтобы кто-то мог объяснить, что происходит, а также предоставить решение, а не просто дать мне исправление, чтобы я мог лучше понять это.
Привет, Люк
Вы не привязываете параметры правильно, ознакомьтесь с руководством .
Вы должны использовать:
$sth->bindParam (':' . $value, [PARAM TYPE - example: PDO::PARAM_INT]);