来自mysql的PHP echo十六进制
在PHP中,我想将UUID打印为mysql数据库中的文本来自mysql的PHP echo十六进制,php,mysql,hex,uuid,Php,Mysql,Hex,Uuid,在PHP中,我想将UUID打印为mysql数据库中的文本 $con = mysql_connect("localhost","user","pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } $db_selected = mysql_select_db('advancedban', $con); $query="SELECT * FROM bm_name_bans";
$con = mysql_connect("localhost","user","pass");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('advancedban', $con);
$query="SELECT * FROM bm_name_bans";
$results = mysql_query($query);
while ($row = mysql_fetch_array($results)) {
echo $row['actor_id'];
}
Row actor_是二进制(16)类型,我将在网站上获得*?|?O2a?GCtq??i
你能帮我得到输出吗?你需要把二进制字符串转换成十六进制字符串。您可以组合使用
dechex
和ord
PHP函数,如下所示:
$row['actor_id'] = '*?|?O2a?GCtq??I';
for ($i = 0; $i < strlen($row['actor_id']); $i++) {
$currentChar = $row['actor_id'][$i]; // you can access string characters like it is an array
echo dechex(ord($currentChar));
}
$row['actor_id']='*?|?O2a?GCtq??I';
对于($i=0;$i
请注意,
strlen
是二进制安全的,可以在这里使用。行$row
的循环在哪里?while($row=mysql\u fetch\u array($results)){echo$row['actor\u id'];}应该是编码问题,你有utf-8编码的元标记吗?警告:如果你只是在学习PHP,请不要学习过时的接口。这很糟糕,已经在PHP7中删除了。替换类和指南类有助于解释最佳实践。确保您的用户参数正确无误,否则最终会导致严重后果。最好将UUID值存储为纯文本,通常为十六进制格式,如bd6033c3-faad-44dd-9fc9-8723b2cad47c
,因为这样您就可以对它们进行索引,在查询中使用它们而不必大惊小怪,并且可以一目了然地了解内部情况。使用二进制值带来的好处非常少。