2016-09-04 2 views
1

Я создаю приложение, которое может получить слово, используя последнюю букву введенного слова. К примеру, в моем случае на моей существующей базе данных последовательность является Appl электронной>Е lephan т>Т раи п>N ERV е>Е ducatio п>N ewspape r> и я буду вводить R ecipe, потому что это последняя буква предыдущего слова. Моя проблема в том, что я не могу получить ответ. Приложение должно дать слово, которое начинается с последней буквы предыдущего слова. Таким образом, в tblcheckword ответ должен быть E mphasis или E MPire, потому что в моем запросе он находится в рандов() и ПРЕДЕЛ 1Как написать заявление LIKE в PHP-запросе?

SELECT word FROM tblcheckword WHERE word LIKE '$word.%' ORDER BY rand() NOT IN (SELECT ig_word FROM tbltempgame) LIMIT 1; 

Я использую LIKE заявление для получения последнего буквы введенного слова. Но снова я все еще получаю ошибку.

This is my error

Вот мой PHP File "checkplsv2.php"

<?php 
$con = mysqli_connect("localhost", "root", "1234", "check") or die ("Error ".mysqli_error($con)); 
$word = $_POST["word"]; 
$sql = "SELECT word FROM tblcheckword where word like '$word.%' order by rand() not in (select ig_word from tbltempgame) LIMIT 1"; 
$result = mysqli_query($con, $sql) or die("Error in selecting ".mysqli_error($con)); 

$response = array(); 
if(mysqli_num_rows($result) > 0){ 
    while($row = mysqli_fetch_array($result)) 
    { 
     array_push($response, array("id"=>$row[0],"ig_word"=>$row[1],"meaning"=>$row[2])); 
     $retrieve = $row[1]; 
    } 
    echo json_encode(array("server_response" => $retrieve)); 
}else{ 
    echo "Retrieve failed"; 
} 

mysqli_close($con); 


?> 

Вот мой MainActivity.java

package com.example.keam.lastnato; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

public class MainActivity extends Activity { 

String id; 
String word; 
String ig_word; 
InputStream is = null; 
String result = null; 
String line = null; 
String data = ""; 
TextView disp; 
String url = "http://192.168.22.16/checkplsv2.php"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final EditText e_word = (EditText) findViewById(R.id.editText1); 
    Button select = (Button) findViewById(R.id.button1); 
    select.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      word = e_word.getText().toString(); 
      select(); 
     } 
    }); 
} 

void select() { 

    class readThis extends AsyncTask<String, Void, String> { 

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

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

      nameValuePairs.add(new BasicNameValuePair("word", word)); 

      try { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost(params[0]); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       is = entity.getContent(); 
       Log.e("pass 1", "connection success "); 
      } catch (Exception e) { 
       Log.e("Fail 1", e.toString()); 
       Toast.makeText(getApplicationContext(), "Invalid IP Address", 
         Toast.LENGTH_LONG).show(); 
      } 

      try { 
       BufferedReader reader = new BufferedReader 
         (new InputStreamReader(is, "iso-8859-1"), 8); 

       StringBuilder sb = new StringBuilder(); 
       while ((line = reader.readLine()) != null) { 
        sb.append(line); 
       } 
       is.close(); 
       result = sb.toString(); 
       Log.e("pass 2", "connection success "); 
      } catch (Exception e) { 
       Log.e("Fail 2", e.toString()); 
      } 


      return result; 
     } 

     @Override 
     protected void onPostExecute(String result) { 

      try { 
       JSONObject json_data = new JSONObject(result); 
       ig_word = json_data.getString("server_response"); 
       Toast.makeText(getBaseContext(), "Name: " + 
       ig_word,Toast.LENGTH_SHORT).show(); 
       TextView disp = (TextView) findViewById(R.id.textView); 
       disp.setText(ig_word); 

      } catch (JSONException e) { 
       Log.e("Fail 3", e.toString()); 
       Log.e("log_tag", "Failed data was: " + result); 
      } 

     } 

     @Override 
     protected void onPreExecute() { 
     } 

     @Override 
     protected void onProgressUpdate(Void... values) { 
     } 

    } 

    readThis hello = new readThis(); 
    hello.execute(new String[]{url}); 
    } 
} 

Вот мой activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.keam.lastnato.MainActivity"> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="39dp" 
    android:padding="11dp" 
    android:hint="Player's Turn" 
    android:ems="10" 
    android:inputType="text"> 

    <requestFocus /> 
</EditText> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/editText1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="24dp" 
    android:onClick="parseJSON" 
    android:padding="11dp" 
    android:text="Select" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Text" 
    android:id="@+id/textView" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

Вот мой tblcheckword и tbltempgame в WAMP PHPMyAdmin

Database Name = "проверить"

Here's my tblcheckword and tbltempword in WAMP phpmyadmin

Вот моя ошибка LogCat.

09-04 19:23:52.051 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.051 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.051 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.051 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.061 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.071 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.071 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.071 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.081 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.091 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:23:52.091 11820-11820/com.example.keam.lastnato E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.example.keam.lastnato.MainActivity.access$super 
09-04 19:24:01.960 11820-12003/com.example.keam.lastnato E/pass 1: connection success 
09-04 19:24:01.960 11820-12003/com.example.keam.lastnato E/pass 2: connection success 
09-04 19:24:01.960 11820-11820/com.example.keam.lastnato E/Fail 3: org.json.JSONException: Value Retrieve of type java.lang.String cannot be converted to JSONObject 
09-04 19:24:01.960 11820-11820/com.example.keam.lastnato E/log_tag: Failed data was: Retrieve failed 
+0

Вы SQL-запрос, очевидно, неверно. –

+0

PHP Query на самом деле является старой библиотекой парсеров html, она не имеет ничего общего с sql (think jQuery) – pguardiario

ответ

0

Ваш адрес неверный.

Попробуйте это:

$sql = "SELECT `word` FROM `tblcheckword`WHERE `word` LIKE ".$word."% NOT IN(select ig_word from tbltempgame) ORDER BY RAND() LIMIT 1"; 
+0

Это неверно. ORDER BY должен быть установлен после условия WHERE ... – pedrouan

+0

У меня все еще есть ошибка. Вот что он говорит. E/log_tag: Failed data was: Ошибка при выборе У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '% order by rand() not in (выберите ig_word из tbltempgame) LIMIT 1' в строке 1 – NeophyteCoder

+0

Отредактирован ответ. –

Смежные вопросы