2013-09-30 3 views
0

Я пытаюсь хранить IP-адреса в моей базе данных, и я использую INET_ATON, как показано ниже,PHP MySQL: INET_ATON не сохраняет данные?

$sql = " 
INSERT INTO pin (
    page_id, 
    user_id, 
    pc_name, 
    ip, 
    geolocation, 
    created_on 
)VALUES( 
    ?, 
    ?, 
    ?, 
    ?, 
    ?, 
    NOW() 
)"; 


$result = $this->connection->executeSQL($sql,array(
$this->page_id, 
$this->user_id, 
$this->getComputerName(), 
'INET_ATON("123.136.106.104")', 
$this->getGeoLocation() 
)); 

Но я не могу получить его конвертированы или сохранены в ip поле в БД. Я получаю 0 вместо номера.

Что мне делать? Что я сделал неправильно с SQL?

+1

Я подозреваю, что вы хотите вставить в 'VALUES (,, INET_ATON(), сейчас????()) 'и просто передайте IP как строковый параметр. –

+0

Используйте ip2long() и long2ip(). Следуйте этот пост refrence [http://stackoverflow.com/questions/2754340/inet-aton-and-inet-ntoa-in-php][1] [1]: HTTP : //stackoverflow.com/questions/2754340/inet-aton-and-inet-ntoa-in-php – user2830076

ответ

1

Проблема у вас не в функции INET_ATON, а в том, как PDO (я предполагаю, что это PDO) интерпретирует связанный параметр. Вы можете действовать, как это вместо:

$sql = " 
INSERT INTO pin (
    page_id, 
    user_id, 
    pc_name, 
    ip, 
    geolocation, 
    created_on 
)VALUES( 
    ?, 
    ?, 
    INET_ATON(?), 
    ?, 
    ?, 
    NOW() 
)"; 

и передать свой IP:

$result = $this->connection->executeSQL($sql,array(
$this->page_id, 
$this->user_id, 
$this->getComputerName(), 
"123.136.106.104", 
$this->getGeoLocation() 
)); 
+0

благодарит за ответ! оно работает! – laukok

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