这是我试图用来存储客户端的IP地址的代码.我试图通过尝试在这个问题中看到的东西将ip地址存储到unsigned int:用于IP地址的MySQL数据类型是什么?
这是我的代码:
$client_ip = $_SERVER['REMOTE_ADDR'];
$ip_insert = "SELECT INET_ATON('$client_ip')";
$sql = "INSERT INTO rtv_sign_cispa (name_cispa,ip_cispa,email_cispa,message_cispa) VALUES ('$name','$ip_insert','$email','$message')";
Run Code Online (Sandbox Code Playgroud)
该语句中还有其他内容存储但只是忽略那些,它们有效,而不是IP地址.
错误:
错误:SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行'192.168.2.1''','email@email.com','Hmmmm')附近使用正确的语法
接近后的ip地址实际上显示了正确的IP,我当然只是出于安全原因将其切换到本地IP.email@email.com和Hmmm来自填写的表单以激活它,所以不要太介意.
有谁知道我做错了什么?我是SQL的新手.
你这样做:
$sql = "INSERT INTO rtv_sign_cispa (name_cispa,ip_cispa,email_cispa,message_cispa) VALUES ('$name',SELECT INET_ATON('$client_ip'),'$email','$message')";
Run Code Online (Sandbox Code Playgroud)
因为你正在设置:
$ip_insert = "SELECT INET_ATON('$client_ip')";
Run Code Online (Sandbox Code Playgroud)
它必须是:
$ip_insert = "INET_ATON('$client_ip')";
Run Code Online (Sandbox Code Playgroud)
这是这样做的方法:
$sql = "INSERT INTO rtv_sign_cispa (name_cispa,ip_cispa,email_cispa,message_cispa) VALUES ('$name',INET_ATON('$client_ip'),'$email','$message')";
Run Code Online (Sandbox Code Playgroud)