我无法使用c#将我的ip地址作为mysql数据库的输入传递给我 我的代码:
string Query = ("SELECT mobile FROM UserDetails where machine_ip=" +ipaddress);
如果是一个如下所示的字符串,它可以正常工作:“1234567890” 但如果看起来像这样:“127.0.0.0”
答案 0 :(得分:4)
试试这个:
"SELECT mobile FROM UserDetails where machine_ip = '" + ipaddress + "'"
此外,如果这是面向最终用户的代码,您应该考虑使用参数化查询来避免SQL注入漏洞。
答案 1 :(得分:3)
你不需要在SQL字符串中将字符串放入引号中......或者更好的是,使用参数化查询(这样你就可以帮助自己抵御SQL注入攻击)
答案 2 :(得分:1)
在不知道数据库构成的情况下,machine_ip
可能不是VARCHAR
。这就是数字有效的原因,但是带有“ASCII”的IP地址没有。
答案 3 :(得分:1)
将其添加到Apostrophes
string Query = ("SELECT mobile FROM UserDetails where machine_ip='" +ipaddress+ "'");
答案 4 :(得分:1)
好像你应该用ipaddress包围' 像这样:
"SELECT mobile FROM UserDetails where machine_ip='" + ipaddress + "'"
答案 5 :(得分:1)
如果在数据库中存储没有像127001这样的点的IP地址,你应该从输入字符串IP中删除点
string res = inputId.Replace(".","");
并且不要在SQL语句中使用字符串连接使用参数化查询
答案 6 :(得分:1)
127.0.0.0
无法隐式转换为字符串,因此您必须像这样调用它:
("SELECT mobile FROM UserDetails where machine_ip='" + ipaddress + "'");
哦,请注意SQL injections。
答案 7 :(得分:1)
有两种方法可以在数据库中存储IP地址,正确的方式和错误的方式。
正确的方法是将IP地址转换为10的整数 - 127.0.0.1转为2130706433,192.168.10.10转为3232238090。
错误的方法是将值中的句点存储为字符串。
如果存储IP的人使用正确的方式,那么您只需要在查询中的INET_ATON调用中包装您的IP地址,如下所示:
SELECT mobile FROM UserDetails where machine_ip=INET_ATON('127.0.0.1');
如果表格中的IP地址存储为字符串,您只需要将您的地址用单引号括起来,一切都应该正常工作(虽然效率较低)。
SELECT mobile FROM UserDetails where machine_ip='127.0.0.1';