我在项目中使用php和MySQL

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

但是,当我尝试使用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 );
}


php - 如何使用PHP和Mysql插入Marathi-LMLPHP

最佳答案

似乎您没有正确配置代码。之所以得到???,是因为您没有告诉浏览器如何解析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);

09-25 20:51