[英]Can't insert data into mysql database with android
EditText tv_username;
EditText tv_firstname;
EditText tv_age;
Button reg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_username = (EditText) findViewById(R.id.username);
tv_firstname = (EditText) findViewById(R.id.firstname);
tv_age = (EditText) findViewById(R.id.age);
reg = (Button) findViewById(R.id.register);
reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/regandroid.php");
if(httppost != null)
{
Context context = getApplicationContext();
CharSequence text = "Connected";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
try
{
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username", tv_username.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("firstname", tv_firstname.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("age", tv_age.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
}
catch(Exception e)
{
e.printStackTrace();
}
这是我的phpcode
$username = $_POST['username'];
$firstname = $_POST['firstname'];
$age = $_POST['age'];
$query = mysql_query($connect, "insert into users
(username, firstname,age) values ('$username'
,'$firstname','$age') ");
?>
也许我的php代码有问题,我找不到问题所在。这是我的php和java代码,尽管它已连接到数据库,但我无法插入数据。 我无法弄清楚我犯了什么错误。
mysql_query的参数顺序错误。
mysql_query(字符串$ query [,资源$ link_identifier = NULL])
链接标识符/连接应通过第二个参数添加,而查询应通过第一个参数添加。
更改:
$query = mysql_query($connect, "insert into users(username, firstname,age) values ('$username', '$firstname', '$age')");
至
$query = mysql_query("insert into users(username, firstname,age) values ('$username', '$firstname', '$age')", $connect);
另外,在将外部数据直接插入查询中时,您的代码也可以进行SQL注入。 如果不可以,请使用带有PDO的预处理语句,或者至少使用mysql_real_escape_string 。
数据库链接并不是真正需要的。 但是,如果通过,则仅在mysql_query语句的末尾传递。 即:
$query = mysql_query("insert into users (username, firstname, age) values ('$username', '$firstname', '$age')", $connect);
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.