PHP只从表中读取前8个字符

时间:2012-11-11 15:00:24

标签: php mysql

我正在使用包含Unicode Malayalam字符串的MySQL表。在使用PHP读取表时,只有前8个字符在fetched数组中存储/读取。

虽然字段中存在完整字符串,但余额部分不会存储在数组中。该字段是字符串Varchar(50) 默认情况下,数据库字符集设置为utf8mb4。 PHP代码如下:

    $con = mysql_connect("localhost","root") or die ();

    $db=mysql_select_db("drivingtest",$con);    //connects database
    mysql_set_charset('utf8mb4',$con);
    $query1="select * from dt_mst where quest_no != ".$row." ORDER BY RAND() limit 1";
    $result=mysql_query($query1) or die(mysql_error());
    $row = mysql_fetch_array($result);
    echo trim($row[2]);

仅显示字符串的第8个字符

1 个答案:

答案 0 :(得分:1)

我认为你的字符串在包含6个字符的实体中被转义。例如,包含8个字符的代码:

ഇതു ഒരു നല്ല

转换为50多个字符的代码:

ഇതു ഒരു ന

查看您的数据库。检查您的数据库是否使用utf8字符集创建。如果不是,请运行以下命令:

ALTER DATABASE databasename DEFAULT CHARACTER SET utf8;

另外在PHP中,在任何选择查询之前设置utf8 mysql连接:

mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET 'UTF8'");

另见有用的链接:http://dev.mysql.com/doc/refman/5.0/en/charset-conversion.html