Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
inet_pton()PHP函数中的错误字符*非Zend*Piwik位置\u ip问题_Php_Mysql_Character Encoding_Matomo - Fatal编程技术网

inet_pton()PHP函数中的错误字符*非Zend*Piwik位置\u ip问题

inet_pton()PHP函数中的错误字符*非Zend*Piwik位置\u ip问题,php,mysql,character-encoding,matomo,Php,Mysql,Character Encoding,Matomo,我正在尝试与服务器上安装的Piwik数据库进行交互。在Piwik数据库中,存储的ip地址的值用inet_ntop()插入。我正在尝试解码这些值,并使用inet_pton()将它们提取出来,这样我就可以运行查询,在存储在本地数据库中的Piwik数据库中查找客户ip地址 当我构建查询时,问题就出现了。我获取数据库中存储的地址并通过inet\u pton()运行它,就像这样 $data = mysql_fetch_assoc(mysql_query("SELECT ip_address FROM da

我正在尝试与服务器上安装的Piwik数据库进行交互。在Piwik数据库中,存储的ip地址的值用inet_ntop()插入。我正在尝试解码这些值,并使用inet_pton()将它们提取出来,这样我就可以运行查询,在存储在本地数据库中的Piwik数据库中查找客户ip地址

当我构建查询时,问题就出现了。我获取数据库中存储的地址并通过inet\u pton()运行它,就像这样

$data = mysql_fetch_assoc(mysql_query("SELECT ip_address FROM data_table WHERE id = 1"));

$more_data = mysql_fetch_assoc(mysql_query("SELECT location_ip FROM piwik_log_visit WHERE location_ip = '".inet_pton($data['ip_address'])."'"));
问题在于inet_pton($data['ip_address'])将显示随机字符(有时)以及黑色菱形问号。它返回一个mysql_错误,表示查询无效(因为错误字符)。我尝试添加mysql\u set\u字符集(“utf8”);在运行查询之前,没有(良好)结果

有什么想法吗

谢谢

$data = mysql_fetch_assoc(mysql_query("SELECT ip_address FROM data_table WHERE id = 1"));
$hexip = bin2hex(inet_pton($data['ip_address']));
$more_data = mysql_fetch_assoc(mysql_query("SELECT location_ip FROM piwik_log_visit WHERE hex(location_ip) = '$hexip'"));
为了使mysql和php不会抛出错误,您需要将inet\u pton的二进制输出转换为hex,然后将mysql存储的hex(location\u ip)值与$hexip变量进行比较

为了使mysql和php不会抛出错误,您需要将inet\u pton的二进制输出转换为十六进制,然后将mysql存储的十六进制(location\u ip)值与$hexip变量进行比较。

二进制故事:

$bin_ip = '0x'.bin2hex(inet_pton($data['ip_address']));

"SELECT location_ip FROM piwik_log_visit WHERE hex(location_ip) = $bin_ip"
二元故事:

$bin_ip = '0x'.bin2hex(inet_pton($data['ip_address']));

"SELECT location_ip FROM piwik_log_visit WHERE hex(location_ip) = $bin_ip"

我和另一位朋友已经确定,函数inet_pton()肯定有问题……我们不知道为什么它会以这种方式转换字符。要从Piwik DB中选择原始数据,建议使用REST API选择日志,因为它会为您完成这项工作,在大多数情况下非常有用:)我和另一位朋友已经确定函数inet_pton()肯定有问题……我们不知道为什么它会以这种方式转换字符。要从Piwik DB中选择原始数据,建议使用REST API来选择日志,因为它为您完成了这项工作,在大多数情况下非常有用:)