Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
PHP/MySQL:从MySQL数据库回显变量时出现奇怪的输出问题_Php_Mysql_Sql - Fatal编程技术网

PHP/MySQL:从MySQL数据库回显变量时出现奇怪的输出问题

PHP/MySQL:从MySQL数据库回显变量时出现奇怪的输出问题,php,mysql,sql,Php,Mysql,Sql,我有一个MySQL表,其中包含名称和电子邮件地址。数据最初是从.csv文件导入的,它最初不包含完整的电子邮件地址。我们必须将@place.domain附加到用户的别名 当数据位于MySQL表中时,看起来很正常:person@place.domain; 然而,当我用PHP输出内容时,我得到了:person@place.domain。人与人之间总有一个空间。在MySQL列中看起来不是这样,在我将数据复制/粘贴到记事本、Word、Excel等中时也不是这样。此外,如果我删除列中的数据并手动将其替换为p

我有一个MySQL表,其中包含名称和电子邮件地址。数据最初是从.csv文件导入的,它最初不包含完整的电子邮件地址。我们必须将@place.domain附加到用户的别名

当数据位于MySQL表中时,看起来很正常:person@place.domain; 然而,当我用PHP输出内容时,我得到了:person@place.domain。人与人之间总有一个空间。在MySQL列中看起来不是这样,在我将数据复制/粘贴到记事本、Word、Excel等中时也不是这样。此外,如果我删除列中的数据并手动将其替换为person@place.domain,它通常显示在我的PHP应用程序中。所以我猜有一些隐藏的字符,PHP正在收集,我无法检测到。有什么方法可以让我清理一下吗?我试过修剪()、更换()、等等,都没用


更新:我发现,当我在MySQL字段中单击并使用箭头键在字符之间移动时,我必须按两次箭头键才能越过@符号,但没有可见的空格。

尝试使用foreach循环,并对字符串中的每个字符执行chr($char)函数,它将显示字符串中每个字符的ascii码,您将发现错误的字符。这是我找到的唯一解决办法。希望有用

我为您制作了以下示例代码:

<?php

 $test = "user @mail.com";
 $aux = explode("@",$test);

 $mailok = trim($aux[0])."@".trim($aux[1]);
 echo $test."     vs  ".$mailok;   

?>

这可能类似于不间断空格(ascii 160)。要摆脱它:

UPDATE my_table SET e_mail = REPLACE(e_mail, CHAR(160), '');

如何检查“位于MySQL表中”的数据?如何在PHP中输出它?你能给我们看一些代码吗?在DBs中有空、空、文本空间和填充空间。我认为你是空间填充的受害者。我建议您使用
选择
来提取所有记录,使用
$email\u parts=explode('@',$row['email'])分解电子邮件,修剪并将零件重新连接在一起
$email=trim(email_parts[0])。@'.trim($email_parts[1])
,然后在循环SELECT时用新的电子邮件地址更新记录。@Sébastien:当我简单地返回MySQL中的所有行时,字段显示正常。没有空间。但是,当我在任何电子邮件地址字段中单击并在字符之间移动时,我必须按两次箭头键才能越过@符号。这向我表明字段中有隐藏的字符。在准备好的语句选择字段后,我的输出代码只是一个简单的echo语句:echo$row['emailaddress'];