Question

I have started using Redbean PHP recently. So I am not much aware of how it deals things. Until now I love how simple it is making things for me. But I have ran into quite an issue today. I need to store credit card numbers into a table. But as soon as I store the bean, the card number gets changed into a float(decimal) kind of value.

'1234123412341234' is getting stored as '1.234123412341234e15'

The datatype is 'double' created by redbean, but I gave as a string. This is kind of weird for me I am not much of an expert in either SQL or PHP. Is there a way to override how redbean creates table. So someone please help me. Am I missing something here. The following is my corresponding code and the framework used is Codeigniter.

Data Variable

$data = array(
    'card_name' => 'Shiva Kumar Avula',
    'card_no' => '1234123412341234',
    'card_issuer' => 'Visa',
    'card_cvv' => '123',
    'card_exp_month' => 12,
    'card_exp_year' => 2020
);

$card = $this->card_model->create_card($data, TRUE); // Making it primary

Model Function

public function create_card($data, $is_primary = FALSE)
{
    $card = R::dispense('card');

    $card->name = $data['card_name'];
    $card->number = $data['card_no'];
    $card->issuer = $data['card_issuer'];
    $card->cvv = $data['card_cvv'];
    $card->exp_month = $data['card_exp_month'];
    $card->exp_year = $data['card_exp_year'];
    $card->is_primary = $is_primary;
    $card->is_verified = 0;
    $card->ts_created = $this->ts_sql;
    $card->ts_modified = $this->ts_sql;

    $id = R::store($card);
}

Snapshot of my output in phpmyadmin, enter image description here

Snapshot that shows the datatype, enter image description here

Était-ce utile?

La solution

You can set the beans meta property for number to string.

$card->setMeta("cast.number", "string"); 

This will save any values of $card->number as varchar.
See RedBean Internals for more information.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top