2013-03-25 2 views
0

Я пытаюсь ввести номер телефона в мою базу данных, столбец установлен как varchar (15), а внутри phpmyadmin он примет номер телефона с ведущим 0 (например, 07712123123).PHP mysqli подготовленные операторы, удаляющие ведущие нули

В моем PHP скрипт у меня есть переменная $ contactNo, который представляет собой строку, содержащую 07712123123

, но когда я использую мое подготовленное заявление для ввода данных в базу данных ведущего нуля удаляется. Как я могу остановить это?

// Insert data into customer_accounts 
if($stmt = $mysqli -> prepare("INSERT INTO customer_accounts (username, password, firstname, lastname, email, number) VALUES (?,?,?,?,?,?)")) { 
    $stmt -> bind_param("ssssss", $username, $password, $firstname, $lastname, $emailAddress, $contactNo); 
    $stmt -> execute(); 
    $stmt -> close(); 
} 

Я echo'd эту переменную до и после утверждения и 0 там, поэтому он должен быть удален, как его положить в базу данных. Я новичок в подготовленных заявлениях, и я не могу понять, что делать, чтобы исправить это.

Спасибо!

+0

Что возвращается, если вы выполните echo $ contactNo в начале инструкции 'if'? – sinisterfrog

+0

номер с ведущим 0 (07123123123), например – TomFrom

ответ

1

В подготовленном заявлении, которое вы предоставили в своем вопросе, нет потока, поэтому я предполагаю, что существует бесшумное преобразование типа данных.

Двойная проверка этой колонки number действительно относится к типу VARCHAR. Я уверен, что у вас есть INT (или аналогичный) тип там.

+0

Числовой столбец определенно является varchar (15). и ive проверил переменную с is_int(), а также определил не int. Как я могу улучшить поток заявления? спасибо за помощь – TomFrom

+0

Если вы делаете назначение в коде перед даным, как '$ contactNo = 07712123123;' того PHP предполагает, что это восьмеричный типа, а затем преобразуется в целом внутренне перед тем, представленным в виде строки с к подготовленному заявление. Проверьте, действительно ли это так. (Тем не менее, вы не должны видеть только удаляемый только нулевой вывод, вы должны видеть целое «другое» число, десятичное представление восьмеричного). Попробуйте обработать переменную '$ contactNo' как строку в коде перед передачей ее в оператор. –

+0

Переменная задается из формы с помощью $ _POST ['contact-no'], затем она дезинфицируется, а затем проверяется ive is_numeric, которая является истиной, поэтому переменная должна быть преобразована в строку, а также $ var = "$ var "& $ var = strval ($ var), но он по-прежнему фиксирует начальный ноль. я думаю, что его что-то делать с mysqli_stmt_bind_param ($ зЬтЬ, «SSSSSS», , если я установить столбец в десятичную 11,0 в базе данных и использовать «sssssd» все еще вырезает 0. – TomFrom

Смежные вопросы