Как найти, присутствует ли эта строка как значение в базе данных mysql в android с помощью php?

Это мой файл кода
Результат будет верным для всех искомых строк. Не знаю почему?
это мой файл JSON на сервере https://vikasbajpayee.000webhostapp.com/villagesapi.php
Файл с PHP-кодом ссылка на PHP код

Скажите, пожалуйста, если здесь кто-нибудь знает. Спасибо заранее.

 button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (name!= null && !TextUtils.isEmpty(name)&&!name.equals("null"))
            new AsyncFetch(name).execute();
            else
                Toast.makeText(Checkout.this, "Please Enter Village name", Toast.LENGTH_SHORT).show();
        }
    });

private class AsyncFetch extends AsyncTask<String, String, String> {

    ProgressDialog pdLoading = new ProgressDialog(Checkout.this);
    HttpURLConnection conn;
    URL url = null;
    String searchQuery;

    public AsyncFetch(String searchQuery){
        this.searchQuery=searchQuery;
    }

    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
        pdLoading.setMessage("\tLoading...");
        pdLoading.setCancelable(false);
        pdLoading.show();

    }

    @Override
    protected String doInBackground(String... params) {
        try {

            url = new URL("https://vikasbajpayee.000webhostapp.com/villagesapi.php");

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.toString();
        }
        try {

            // Setup HttpURLConnection class to send and receive data from php and mysql
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(READ_TIMEOUT);
            conn.setConnectTimeout(CONNECTION_TIMEOUT);

            // setDoInput and setDoOutput to true as we send and recieve data
            conn.setDoInput(true);
            conn.setDoOutput(true);

            Uri.Builder builder = new Uri.Builder().appendQueryParameter("searchQuery", searchQuery);
            String query = builder.build().getEncodedQuery();

            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
            writer.write(query);
            writer.flush();
            writer.close();
            os.close();
            conn.connect();

        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            return e1.toString();
        }

        try {

            int response_code = conn.getResponseCode();

            // Check if successful connection made
            if (response_code == HttpURLConnection.HTTP_OK) {

                // Read data sent from server
                InputStream input = conn.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder result = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

                // Pass data to onPostExecute method
                return (result.toString());

            } else {
                return("Connection error");
            }

        } catch (IOException e) {
            e.printStackTrace();
            return e.toString();
        } finally {
            conn.disconnect();
        }


    }

    @Override
    protected void onPostExecute(String result) {

        //this method will be running on UI thread
        pdLoading.dismiss();

        pdLoading.dismiss();
        if (result.equals("no rows")) {
            Toast.makeText(Checkout.this, "No Village exist with this name", Toast.LENGTH_LONG).show();
        } else {
            //success
            Toast.makeText(Checkout.this, "Success", Toast.LENGTH_SHORT).show();
            Intent intent=new Intent(Checkout.this,FinalCheckout.class);
            intent.putExtra("namedata",name);
            startActivity(intent);
        }

    }
}
}

Я ищу "имя" после нажатия кнопки в базе данных MySQL PHP, как я могу это сделать. Так что в результате будет выполняться поиск имени в другом действии .этот код не работает, потому что он выполняется для всех искомых строк (имя здесь). Он выполняется во всех случаях.

В Android с помощью PHP? В чем именно проблема. ?

ADM 31.03.2018 09:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сторона Android:

На самом деле вы ничего не ищете. Вы просто получаете данные с определенного URL-адреса, который дает вам одни и те же данные при каждом запросе.

вам нужно добавить какой-то параметр в URL-адрес, например:

example.com/villagesapi.php?name=myvillage

Сторона сервера:

И в вашем PHP-скрипте вы должны сгенерировать ответ в соответствии с запрошенным параметром. вы можете сделать это так:

if (isset($_GET['name'])) {
   //search from database where name = $_GET['name']
   //then echo json_encode(database response array)
}

и текущая проблема здесь,

if (result.equals("no rows")) {
        Toast.makeText(Checkout.this, "No Village exist with this name", Toast.LENGTH_LONG).show();
} 

Вы проверяете, является ли ответ «нет строк», а затем показываете ложное сообщение. Но вы всегда получаете строковый ответ JSON, который не является «без строк». Вот почему для всех запросов вы выполняете правду.

Примечание: в Android вы не должны искать строку с помощью метода .содержать(), вы должны анализировать строку JSON на предмет имени.

Другие вопросы по теме