2017-05-26 10 views
1

リモートユーザIPをデータベースに保存しようとしています。目的のために私はint(10) UNSIGNEDという列を作成しました。用意された状態でリモートIPを保存する

私はこのすべての作品のようにしてみてくださいしかし、私はINET_ATON何がデータベースに行かない使用しようとするとIPが127.0.0.1

$ipaddr = $_SERVER['REMOTE_ADDR']; 
$stmt = $pdo->prepare('INSERT INTO comment (body, author, email, date, url, ip) VALUES (:body, :author, :email, NOW(), :url, :ipaddr)'); 

$stmt->execute(array(
    ':body' => $_POST['k3jZGEeX1k1oo'], 
    ':author' => $_POST['k3k0xKicU0eHQ'], 
    ':email' => $email, 
    'url' => $url, 
    'ip' => $ipaddr 
)); 

のように保存されます。

$ipaddr = $_SERVER['REMOTE_ADDR']; 
$stmt = $pdo->prepare('INSERT INTO comment (body, author, email, date, url, ip) VALUES (:body, :author, :email, NOW(), :url, :INET_ATON(ipaddr))'); 

$stmt->execute(array(
     ':body' => $_POST['k3jZGEeX1k1oo'], 
     ':author' => $_POST['k3k0xKicU0eHQ'], 
     ':email' => $email, 
     'url' => $url, 
     'ip' => $ipaddr 
)); 

:INET_ATON(ipaddr)に注意してください。準備されたステートメントでこれを行うにはどうすればよいですか?

+1

':INET_ATON'?これは組み込み関数ですhttps://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet-atonなぜコロンですか?あなたが望むのは 'INET_ATON(:ip)'です。 –

+0

'int(10)UNSIGNED'を使うべきではありません。それは "奇妙な"数字です...あなたは3つのドット( '.')を持っています。それで 'varchar(12)' - > 'XXX.YYY.ZZZ.WWW' - > 12 – matiaslauriti

+0

@ Fred-ii-に変更してください。これも同様に試しましたが、' error 500'を返しました –

答えて

1

@ Fred-ii-は、エラーを確認する必要があります。私もthis solutionをお勧めし、PHPの機能ip2longをビルドすることができます。あなたのケースでは、あなたが、あなたのクエリで(@フレッド-II-コメントから再び)INET_NTOAを使用することができ、実際のIPを選択して表示するには

$ipaddr = $_SERVER['REMOTE_ADDR']; 
$ip = sprintf("%u", ip2long($ipaddr)); 

$stmt = $pdo->prepare('INSERT INTO comment (body, author, email, date, url, ip) VALUES (:body, :author, :email, NOW(), :url, :ip)'); 

$stmt->execute(array(
    ':body' => $_POST['k3jZGEeX1k1oo'], 
    ':author' => $_POST['k3k0xKicU0eHQ'], 
    ':email' => $email, 
    ':url' => $url, 
    ':ip' => $ip 
)); 

になります。

+0

配列ではコロンが必要ではなく、非常にまれな*機会にのみ使用できます。しかし、OPはコメントで私に質問することについて何も言わなかった。 –

+0

実際にあなたは正しいです。 'execute()'と 'bindParam()'の呼び出しではオプションです。それらは 'SQL文でのみ必要です –

関連する問題