2014-12-17 4 views
1

Android 애플리케이션에서 EditText의 심볼을 가져 와서 데이터베이스에 저장하려고합니다. 데이터베이스에서 가져와 편집하고 있습니다. 예를 들어,이 기호는 μ입니다. 그것은 잘 retrived됩니다,하지만 편집하고 변경 사항을 저장하면 심볼은 ?로 저장되며, 나는 왜 그런지 모르겠다.edittext에서 심볼을 가져 와서 데이터베이스에 저장하십시오.

내 PHP 파일이 추가되었습니다 :

mysql_query("SET NAMES 'utf8'"); 
header("Content-type: application/json; charset=utf-8"); 

이것은 자바 코드

class SaveglossaryDetails extends AsyncTask<String, String, String> { 


/** 
* Saving glossary 
* */ 
protected String doInBackground(String... args) { 

    // getting updated data from EditTexts 
    String Name = name.getText().toString(); 
    String Description = description.getText().toString(); 
    String Symbol = symbol.getText().toString(); 

    // Building Parameters 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair(TAG_GID, gid)); 
    params.add(new BasicNameValuePair(TAG_NAME, Name)); 
    params.add(new BasicNameValuePair(TAG_DESCRIPTION, Description)); 
    params.add(new BasicNameValuePair(TAG_SYMBOL, Symbol)); 

    // sending modified data through http request 
    // Notice that update glossary url accepts POST method 
    JSONObject json = jsonParser.makeHttpRequest(url_update_glossary,"POST", params); 

    // check json success tag 
    try { 
     int success = json.getInt(TAG_SUCCESS); 

     if (success == 1) { 
      // successfully updated 
      Intent i = new Intent(getApplicationContext(), AdminGlossary.class); 
      i.putExtra("admin", admin); 
      startActivity(i); 
     } else { 
      // failed to update glossary 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

내 PHP 코드

<?php 


// array for JSON response 
$response = array(); 

// check for required fields 
if (isset($_POST['ID_glossary']) && isset($_POST['symbol']) && isset($_POST['name']) && isset($_POST['description'])) { 

$ID_glossary = $_POST['ID_glossary']; 
$name = $_POST['name']; 
$symbol = $_POST['symbol']; 
$description = $_POST['description']; 


// include db connect class 
require_once __DIR__ . '/db_connect.php'; 

// connecting to db 
$db = new DB_CONNECT(); 
mysql_query("SET NAMES 'utf8'"); 

// mysql update row with matched pid 
$result = mysql_query("UPDATE glossary SET Symbol='$symbol', Name = '$name',  Description = '$description' WHERE ID_Glossary = $ID_glossary"); 
header("Content-type: application/json; charset=utf-8"); 

// check if row inserted or not 
if ($result) { 
    // successfully updated 
    $response["success"] = 1; 
    $response["message"] = "glossary successfully updated."; 

    // echoing JSON response 
    echo json_encode($response); 
} else { 

} 
} else { 
// required field is missing 
$response["success"] = 0; 
$response["message"] = "Required field(s) is missing"; 

// echoing JSON response 
echo json_encode($response); 
} 
?> 

db_connect입니다

<?php 

/** 
* A class file to connect to database 
*/ 
class DB_CONNECT { 

// constructor 
function __construct() { 
    // connecting to database 
    $this->connect(); 
} 

// destructor 
function __destruct() { 
    // closing db connection 
    $this->close(); 
} 

/** 
* Function to connect with database 
*/ 
function connect() { 
    // import database connection variables 
    require_once __DIR__ . '/db_config.php'; 

    // Connecting to mysql database 
    $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error()); 

    // Selecing database 
    $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error()); 
mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =utf8;"); 
mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =utf8;"); 
    // returing connection cursor 
    return $con; 
} 

/** 
* Function to close db connection 
*/ 
function close() { 
    // closing db connection 
    mysql_close(); 
} 

} 

?> 

어떻게 해결할 수 있습니까? 문제는 어디에 있습니까?

+0

문자열 로깅을 시도하여 Java가 값을 올바르게 캡처하지 못하는지 확인할 수 있습니까? –

+0

@ Jays. 문제는 그것 때문에 가상 장치에서 응용 프로그램을 실행할 수 없다는 것입니다. 왜냐하면 그 큰 장치는 실제 장치에서만 실행할 수 있기 때문입니다. – lama

+0

아, 안드로이드 SDK가 있고 장치에서 USB 디버깅을 활성화하면 컴퓨터에서 DDMS를 사용하여 콘솔을 볼 수 있습니다. @ 라마 –

답변

0

좋아요, 문제가 있다고 생각합니다.

는 서버 측에서 모든 삽입 쿼리하기 전에 mysql_query("SET NAMES 'utf8'");이 무엇을 기대하는 캐릭터 세트 데이터베이스를 알 수 있기 때문입니다

mysql_set_charset('utf8',$link); 

를 추가하려고하지만, MySQL은 그 캐릭터 세트를 전송하지 않습니다. 이것이 작동하는지 알려주세요.

이것은 문제가되지 않을 수 있지만 PHP 스크립트에서 mysql_client_encoding($link);을 실행하고 utf8을 반환하지 않으면 문제가 발생할 가능성이 큽니다.

또한 mysql_ * 함수는 더 이상 사용되지 않습니다. mysqli_ 또는 PDO을 사용해야합니다. 좋아

Source

+0

시도했지만 작동하지 않았습니다 .. 내 코드에서 mysql_client_encoding ($ link);을 어떻게 사용할 수 있습니까? 그냥 복사하여 붙여 넣기 만하면됩니다. 내가했기 때문에 아무것도 반환하지 않았다. – lama

+0

내 전체 PHP 파일 – lama

+0

을 게시 했는가? 링크가 내부에 있어야하기 때문에, 우리가 알고 있다면 mysql_set_charset도 수정할 수있다. . 내 대답을 편집했습니다. @ 라마 –

0

지금은 더 많은 코드를 보았으므로, 나는 당신이 잘못된 일을 많이하고있는 참조하십시오.

여기에 pastie이 있습니다. 변경 사항을 확인하는 데 사용할 수 있습니다.

+0

그것과 똑같은 것을 시도해보십시오. ( – lama

+0

오, 이런. 질문과 재 게시를 시도하고 삭제하는 것은 어떨까요? 아마 다른 누군가가 당신을 도울 수 있습니다 .. @lama –

+0

괜찮아요. 정말 고맙습니다. 노력과 나를 무시하지 않는 것 !! – lama

관련 문제