如何使用PHP和Mysql插入Marathi

时间:2016-11-16 09:15:36

标签: php mysql json

我正在使用php和MySQL作为我的项目

我想将Marathi文本存储在MySQL数据库中,我用Google搜索了几个小时,通过将MySQL数据库编码更改为utf-8找到了一半的解决方案。我可以手动(通过PHPMyAdmin)在Mysql数据库中存储Marathi字符。

但是,当我尝试使用php插入一些文本时,我得到“???”(问号)而不是马拉地语字符。

我还需要在php中设置编码吗?如果是,那怎么样?

以下是在数据库中插入数据的代码

public function create_place(){  
    include_once( dirname( __FILE__ ).'/_inc.php' );
      $q = $_REQUEST;
        $person_id=$q['person_id'];
        $title = $q['title'];
        $address = $q['address'];
        $mobile=$q['mobile'];
        $latitude=$q['latitude'];
        $longitude=$q['longitude'];
        $cat_id=$q['cat_id'];
        $create_time=Date( 'Y-m-d H:i:s' );
        $sql="INSERT INTO place(person_id,title,address,mobile,latitude,longitude,cat_id,create_time) VALUE('$person_id','$title','$address','$mobile','$latitude','$longitude','$cat_id','$create_time')";
        $this->db->query($sql);
        $lastid = $this->db->insert_id();
         //echo $lastid;
            include_once( dirname( __FILE__ ). '/SimpleImage.php' );
            $_REQUEST['id'] = $lastid;
            include_once( dirname( __FILE__ ). '/SimpleImage.php' );
            include_once( dirname( __FILE__ ).'/_inc.php' );
            $target= FCPATH. '/assets/uploads/place/';
            $target1=$target.basename(date('m-d-Y_H:i:s').'_'.$_REQUEST['id'].'_'.@$_FILES['image']['name']);
            $img=basename(date('m-d-Y_H:i:s').'_'.$_REQUEST['id'].'_'.@$_FILES['image']['name']);
            move_uploaded_file(@$_FILES['image']['tmp_name'],$target1);
            $this->load->model( 'mplace' );
            $sql="UPDATE place set image='$img' WHERE id='".$_REQUEST['id']."'";
            $this->db->query($sql);
        $this->_render_json( array(
            'message' => 'place Create Successfully',
            'image'=>$this->image_url('place',$img),
        ) );

        $this->_render_json( $data );
}

enter image description here

3 个答案:

答案 0 :(得分:0)

尝试类似的事项 -

$title=utf8_encode($q['title']);


希望这会有所帮助。

答案 1 :(得分:0)

您好像没有正确配置代码。您收到???,因为您没有告诉您的浏览器如何解析Marathi。将这段代码添加到您的html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

然后,检查您存储Marathi的列是否具有归类类型utf8_general_ci。为此,SQL命令SHOW TABLE STATUS应显示表的属性。如果排序规则不是utf8_general_ci,则通过以下SQL命令更改它:

ALTER TABLE dbo.MarathiTable 
MODIFY marathi varchar(100)COLLATE utf8_general_ci;

确保插入语句的配置如下:

"INSERT INTO `comments`(id,comment) values (N'$id',N'$comment')";

这里,前缀N告诉SQL引擎它插入的值是国家区域语言字符集。

另外,在程序开头写下这个,将所有重要变量设置为utf8。因此,您可以执行所有其他操作,而无需担心编码。

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);

答案 2 :(得分:0)

在您的查询mysql_set_charset( $con, 'utf8');mysqli_set_charset( $con, 'utf8');

之前使用此功能

在数据库结构中,将其排序规则保持为utf8_general_ci

这将解决您的问题。