2013-03-31 2 views
2

Я пишу приложение для вставки данных в базу данных MySQL. Я написал SQL-запрос в PHP, и когда я ввожу значения в приложение Android, я не вижу никаких ошибок в log cat, но значения не сохраняются в базе данных.Вставьте данные в базу данных MySQL из приложения Android. Изменения не отражены в базе данных

Вот PHP код:

<?php 

$connect = mysqli_connect("localhost","root","","easyassigndroid"); 

if(mysqli_connect_errno($connect)) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
else 
{ 
    echo "success"; 
} 

$username = isset($_POST['sPhone']) ? $_POST['sPhone'] : ''; 
$password = isset($_POST['sPassword']) ? $_POST['sPassword'] : ''; 

$query = mysqli_query($connect, "insert into users (sphone, spassword) values ('$username' ,'$password') "); 

mysqli_close($connect); 
?> 

Вот андроид часть:

protected void onCreate(Bundle savedInstanceState) { 

    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.register_lecturer); 

    phonenum = (EditText) findViewById(R.id.id_phone); 
    password = (EditText) findViewById(R.id.id_password); 

    sPhone = phonenum.toString(); 
    sPassword = password.toString(); 

    registerLecturer=(Button)findViewById(R.id.lecturerregister); 
    registerLecturer.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      httpclient = new DefaultHttpClient(); 
      httppost = new HttpPost("http://10.0.2.2/project/insert.php"); 

      try 
      { 
       nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("sphone", sPhone)); 
       nameValuePairs.add(new BasicNameValuePair("spassword", sPassword)); 

       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       response = httpclient.execute(httppost); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }); 


} 

Я новичок кодированию как Android и PHP. Может ли кто-нибудь сказать мне, где проблема в моем коде? Мне нужно это для моей проектной работы.

+0

Я думаю, что вы получаете исключение, чтобы почему его не вставляли данные в базу данных. Отладка вашего приложения. –

+0

Правильный ли код PHP? А как насчет кода Android? – user2201650

+0

PHP-код выглядит нормально (поскольку имена и записи в базе данных являются corect). Я бы посоветовал сначала попробовать с $ _GET, потому что вы можете легко проверить, правильно ли PHP-код. –

ответ

2

Только один момент: чтобы получить значение из Android EditText мы используем

x.getText().toString(); 

где х представляет собой объект EditText, верно? надеюсь, что это поможет вообще.

Но, так как это делается в OnCreate() - а не внутри OnClick() - вы должны изменить:

nameValuePairs.add(new BasicNameValuePair("sphone", sPhone)); 

в

nameValuePairs.add(new BasicNameValuePair("sphone", phonenum.getText().toString())); 

И точно так же для другой , Cheers.

+0

Я поместил метод .getText(). Но теперь пространство (' ') сохраняется в БД, когда я ввожу «1234512345» в качестве значения поля sThone EditText в эмуляторе. Это меня беспокоит последние 2-3 дня.: ( – user2201650

+0

Вы должны сделать это: поместите x.getText(). toString() - в функцию onClick() - не в onCreate() - так как значения будут только теми, которые они содержали во время создания. Cheers. –

+0

Огромное вам спасибо! Сейчас работает !! :) Спасибо TON !! :) – user2201650

0

Как я вижу, вы используете «sPhone» и «sphone» в качестве ключей. Я бы рекомендовал иметь его как с одинаковыми именами.

nameValuePairs = new ArrayList<NameValuePair>(2); 
nameValuePairs.add(new BasicNameValuePair("sphone", sPhone)); 
nameValuePairs.add(new BasicNameValuePair("spassword", sPassword)); 

И в PHP

$_POST['sphone'] 
$_POST['spassword'] 
+0

Я получаю «Неопределенный индекс: sphone» и «Undefined index: spassword», когда я пытаюсь использовать ваш PHP-код. – user2201650

+0

Вы не можете получить неопределенный индекс когда вы используете isset() ... У вас должно быть что-то еще неправильное. Вы меняли все ключи? –

+0

Я поставил isset(). Ошибок в PHP-коде не было. Но поле «sphone» в базе данных сохраняется как «andorid.wi», когда я вхожу в поле sphone в эмуляторе как «1234512345». – user2201650

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