我試圖在數據庫中保存遠程用戶IP。爲此目的,我創建了一列爲int(10) UNSIGNED
。使用準備好的狀態保存遠程IP
當我嘗試這樣的一切工作,但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
));
當我嘗試使用INET_ATON
沒有進入數據庫。
$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)
。我如何用準備好的語句來做到這一點?
':INET_ATON'?這是一個內置函數https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet-aton爲什麼冒號?你想要的是'INET_ATON(:ip)' –
你不應該使用'int(10)UNSIGNED'。這是一個「奇怪」的數字......你有3個點('.')。所以把它改爲'varchar(12)' - >'XXX.YYY.ZZZ.WWW' - > 12 – matiaslauriti
@ Fred-ii-我試過也是這樣,但後來我有'錯誤500' –