Доброго времени всем! столкнулся с такой проблемой, при написании приложения (телефонная книга) на PHP, и сейчас попробую ее описать:
Приложение построено по принципу MVC. Существует контролер, который принимает запрос при записи нового контакта, вот непосредственно метод "add" который и занимается этим!
public function actionAdd() {
if (isset($_GET['submit'])) {
$data['name'] = htmlspecialchars($_GET['name']);
$data['surname'] = htmlspecialchars($_GET['surname']);
$data['patronymic'] = htmlspecialchars($_GET['patronymic']);
$data['numbers'] = $_GET['number'];
Contacts::addContact($data);
PhoneNambers::addPhoneNumbers($data['numbers']);
header('Location: /');
} else {
echo 'submit not have';
}
return true;
}
А вот та самая модель PhoneNumbers, которая и отвечает за запись новых телефонных номеров и присваивает им contact_id
public static function addPhoneNumbers($data) {
$contact_id = Contacts::getCount();
$db = Db::getConnection(); //подключаюсь к БД
foreach ($data as $key => $number) { //создаю цикл для обработки массива с тел. номерами
$sql = 'INSERT INTO phone_numbers (phone_number, contact_id) ' //создаю подготовленный запрос к БД
. 'VALUES (:phone_number, :contact_id)';
$result = $db->prepare($sql);
$result->bindParam(':phone_number', $number, PDO::PARAM_INT); //подствляю значение телефонного ноера
$result->bindParam(':contact_id', $contact_id, PDO::PARAM_INT); //значение раннее полученного id из таблицы контактов
$result->execute();
}
}
Так вот, при записи одного номера телефона, все в порядке, если их более чем один, записывается случайный ряд цифр - 2147483647, и всегда один и тот же, хотя случаются ситуации, когда и два номера нормально прописываются. Для меня это мистика, но вот, что я выяснил, данные приходят нормальные, а вот в БД они уже записываются случайными цифрами!
Может все дело в неправильном построении подготовленных запросов PDO?