Не получен полный ответ на строку от дооснащения в Android - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь выполнить следующий запрос в моем файле PHP.

показать создать таблицу test.account;

Когда я повторяю ответ, я получаю только первое слово запроса, т. Е. СОЗДАТЬ. Я окружил весь запрос одиночными кавычками, но когда я повторяю ответ, я получаю только ответ от первой одинарной кавычки до следующей одинарной кавычки (следующая одинарная кавычка используется для некоторой строки по умолчанию), а не весь запрос.

Ниже приведен мой код интерфейса API -

@GET("createQueries.php/")
Call<String> loadCreateQueries(@Query("tableName") String tableName);

Мой PHP-код -

 <?php

    include_once 'db_functions.php';
    $db = new DB_Functions();

    require_once 'config.php';
    // connecting to mysql
    $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if ( !$con){
        echo "Database Connection Error";
    }

    // selecting database
    $select = mysqli_select_db($con,DB_DATABASE);
    if ( !$select){
        echo "Database Selection Error";
    }

    $tableName = $_GET["tableName"];


    $result = mysqli_query($con, "SHOW CREATE TABLE test.".$tableName);

    if ($result != false) {
        $create_query = "'{";
        while ($row = mysqli_fetch_assoc($result)) {
            $fields = array_values($row);
            $create_query = $create_query.$fields[1];
        }
        $create_query = $create_query."}'";
        echo $create_query;
    } else {
        echo "Table not in server";
    }

?>

Ответ

{CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `amount` float DEFAULT NULL,
  `interestRate` float DEFAULT NULL,
  `totalInterestReceived` float DEFAULT 

Код клиента -

  public void createTable() {
    if (tableNames.length > tableIndex) {
        NetworkUtil.getAPI(getApplicationContext()).loadCreateQueries(tableNames[tableIndex]).enqueue(new Callback<JsonElement>() {
            @Override
            public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
                progressDialog.dismiss();
                if (response.isSuccessful()) {
                    String query = response.body().getAsString();
                    Log.d("Create Query - ", query);

                } else System.out.println(response.errorBody());
            }

            @Override
            public void onFailure(Call<JsonElement> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }
}

1 Ответ

0 голосов
/ 01 мая 2018

Я не знаю, является ли это лучшим подходом, но я заменяю одинарные кавычки на% 27, и перед эхо я окружил их одинарными кавычками.

Вот обновленный код -

if ($result != false) {
    $create_query = "";
    while ($row = mysqli_fetch_assoc($result)) {
        $fields = array_values($row);
        $create_query = $create_query.$fields[1];
    }
    //$create_query = $create_query."";

    $create_query = str_replace('\'', '%27', $create_query);
    echo "'".$create_query."'";
} else {
    echo "Table not in server";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...