2013-04-07 4 views
-3

Я создаю простую регистрационную форму на Android для создания нового использования и хранения данных в базе данных с использованием PHP MySQL.android + php + mysql + регистрировать ошибки

Приложение работает хорошо, но проблема в том, что система вставляет данные в базу данных, но отображает на эмуляторе сообщение об ошибке. Как исправить эту ошибку ??? Может кто-нибудь мне помочь?

register.java

package com.sencide; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
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.apache.http.protocol.HTTP; 
import org.apache.http.util.EntityUtils; 

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

public class AndroidRegister extends Activity implements OnClickListener { 

    EditText uname, upass; 
    Button registerBtn; 
    TextView result; 

    String user, pass; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.register); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 

      registerBtn = (Button)findViewById(R.id.registerbtn); 
      registerBtn.setOnClickListener(this); 

      result = (TextView) findViewById(R.id.resulttxt); 
    } 


    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if(v == registerBtn) 
     { 
      Thread t = new Thread() { 

       public void run() { 
        registerData(); 
       } 
      }; 
      t.start(); 

     } 
    } 

    public void registerData() 
    { 
     uname = (EditText)findViewById(R.id.username); 
     user = uname.getText().toString(); 


     upass = (EditText)findViewById(R.id.password); 
     pass = upass.getText().toString(); 

     try 
     { 
      // Create a new HttpClient and Post Header 
       HttpClient httpclient = new DefaultHttpClient(); 
       Log.e("Response-->", "after httpclient"); 
      /* login.php returns true if username and password is equal to saranga */ 
       HttpPost httppost = new HttpPost("http://10.0.2.2/register.php"); 
       Log.e("Response-->", "after httppost"); 

       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("username", user)); 
       nameValuePairs.add(new BasicNameValuePair("password", pass)); 

       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       Log.e("Responce-->", "after using the list name pair"); 

       // Execute HTTP Post Request 
       Log.w("SENCIDE", "Execute HTTP Post Request"); 
       HttpResponse response = httpclient.execute(httppost); 
       Log.e("Responce-->", "after execute the http response"); 
       String str = EntityUtils.toString(response.getEntity(), HTTP.UTF_8); 
       Log.d("STR", str); 

       if (str.toString().equalsIgnoreCase("true")) { 

        runOnUiThread(new Runnable() { 
         public void run() { 

          result.setText("register Successful"); 
         } 
        }); 

       } else { 
        runOnUiThread(new Runnable() { 
         public void run() { 
          result.setText("Duh no register"); 

         } 
        }); 
       } 

     } 
      catch (ClientProtocolException e) 
      {  
       e.printStackTrace(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 




    } 




} 

журнал кошки

04-07 22:04:02.932: E/Response-->(469): after httpclient 
04-07 22:04:02.932: E/Response-->(469): after httppost 
04-07 22:04:03.033: E/Responce-->(469): after using the list name pair 
04-07 22:04:03.033: W/SENCIDE(469): Execute HTTP Post Request 
04-07 22:04:03.552: E/Responce-->(469): after execute the http response 
04-07 22:04:03.626: D/STR(469): <br /> 
04-07 22:04:03.626: D/STR(469): <font size='1'><table class='xdebug-error xe-warning xe-scream' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 
04-07 22:04:03.626: D/STR(469): <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> SCREAM: Error suppression ignored for</th></tr> 
04-07 22:04:03.626: D/STR(469): <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\register.php on line <i>27</i></th></tr> 
04-07 22:04:03.626: D/STR(469): <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
04-07 22:04:03.626: D/STR(469): <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
04-07 22:04:03.626: D/STR(469): <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0593</td><td bgcolor='#eeeeec' align='right'>142592</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp\www\register.php' bgcolor='#eeeeec'>..\register.php<b>:</b>0</td></tr> 
04-07 22:04:03.626: D/STR(469): <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.3134</td><td bgcolor='#eeeeec' align='right'>150008</td><td bgcolor='#eeeeec'><a href='http://www.php.net/mysql_fetch_array' target='_new'>mysql_fetch_array</a> 
04-07 22:04:03.626: D/STR(469): ()</td><td title='C:\wamp\www\register.php' bgcolor='#eeeeec'>..\register.php<b>:</b>27</td></tr> 
04-07 22:04:03.626: D/STR(469): </table></font> 

register.php

<?php 
$host="localhost"; // Host name 
$username="*****"; // Mysql username 
$password="****"; // Mysql password 
$db_name="testlogin"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

// To protect MySQL injection 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$message = ""; 

$sql = mysql_query("INSERT INTO members (username, password)VALUES('$myusername', '$mypassword')")or die(mysql_error()); 

$message = "you have now been registered"; 

$getid = mysql_fetch_array($sql); 

      $_SESSION['login_user'] = $getid['username']; 

?> 
+0

StackOverflow не подходит для этого вопроса. Мы не делаем отладки кода. Вам нужно сделать свою собственную отладку, и если вы не уверены, почему что-то не работает должным образом, отправьте код с объяснением того, что вы ожидаете от него, и что на самом деле делает, включая все сообщения об ошибках. См. [About StackOverflow] (http://stackoverflow.com/about). –

+0

sir Я новичок в stackoverflow, и я объяснил, что такое ошибка, и что я ожидал получить в результате, вы можете мне помочь? – user2254979

+0

@ user2254979: Я добавил вероятное решение ниже. Помогло ли это? – halfer

ответ

4

Ошибка в файле PHP. Если вы посмотрите на LogCat, у вас есть:

Warning: mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический дан в C: \ WAMP \ WWW \ register.php

Это наводит на мысль, чтобы что вы не подключены к базе данных, или ваш запрос неверен, или у вас нет доступа к таблицам, которые вы пытаетесь прочитать. Руководство PHP показывает, что the mysql_query function может вернуть false - это отвечает за создание переменной $sql.

Попробуйте вместо этого:

$getid = @mysql_fetch_array($sql) or die(mysql_error()); 

Это покажет вам, что ошибка - это может быть стоит отладки это в конце PHP - это гораздо сложнее, с помощью Android и LogCat!

Кстати, я не рекомендую использовать оператор подавления ошибок (@) в реальном времени, если вы не знаете, что делаете. Это может сделать отладку намного сложнее, поэтому позаботьтесь об этом.

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