尝试在数据库中存储IP地址.SQL错误

Com*_*cus 1 php mysql sql

这是我试图用来存储客户端的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的新手.

Lui*_*iri 5

你这样做:

$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)