Java 在Android中添加到外部数据库
我是Android编程新手,我正在尝试接受用户输入并将其添加到我的外部数据库中。现在我的php代码是:Java 在Android中添加到外部数据库,java,php,android,mysql,database,Java,Php,Android,Mysql,Database,我是Android编程新手,我正在尝试接受用户输入并将其添加到我的外部数据库中。现在我的php代码是: <?php mysql_connect("host","login","pass") or die ("Unable to connect to MySQL"); mysql_select_db("database"); mysql_query("INSERT INTO Table (number, format, name, price) VALUES ('".$_REQUEST['
<?php
mysql_connect("host","login","pass") or die ("Unable to connect to MySQL");
mysql_select_db("database");
mysql_query("INSERT INTO Table (number, format, name, price) VALUES ('".$_REQUEST['number1']."', ".$_REQUEST['format1'].", ".$_REQUEST['name1'].", ".$_REQUEST['price1'].")");
mysql_close();
我没有发现我的php有任何问题,但是当我运行我的程序时,我没有得到任何错误,但是当我查看我的数据库时,似乎没有任何东西被添加。我的Java代码是:
Log.d("debug", "ENTER METHOD ADD");
new Thread(new Runnable(){
public void run(){
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
EditText eNumber = (EditText) findViewById(R.id.barcodeEdit);
EditText eFormat = (EditText) findViewById(R.id.codeFormatEdit);
EditText eName = (EditText) findViewById(R.id.titleEdit);
EditText ePrice = (EditText) findViewById(R.id.priceEdit);
Log.d("debugNumber", eNumber.getText().toString());
Log.d("debugFormat", eFormat.getText().toString());
Log.d("debugName", eName.getText().toString());
Log.d("debugPrice", ePrice.getText().toString());
nameValuePairs.add(new BasicNameValuePair("number1", eNumber.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("format1", eFormat.getText().toString())); //you can add as many you need
nameValuePairs.add(new BasicNameValuePair("name1", eName.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("price1", ePrice.getText().toString()));
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://MY_SITE.com/my.php");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
//is = entity.getContent();
Log.d("debug", "ENDED TRY");
}catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", e.toString());
//return false;
//Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
}
}
}).start();
Log.d(“调试”,“输入方法添加”);
新线程(newrunnable()){
公开募捐{
ArrayList nameValuePairs=新的ArrayList();
EditText枚举器=(EditText)findViewById(R.id.barcodeEdit);
EditText eFormat=(EditText)findViewById(R.id.codeFormatEdit);
EditText-eName=(EditText)findViewById(R.id.titleEdit);
EditText ePrice=(EditText)findViewById(R.id.priceEdit);
Log.d(“debugNumber”,eNumber.getText().toString());
d(“debugFormat”,eFormat.getText().toString());
Log.d(“debugName”,eName.getText().toString());
Log.d(“debugPrice”,ePrice.getText().toString());
添加(新的BasicNameValuePair(“number1”,eNumber.getText().toString());
nameValuePairs.add(新的BasicNameValuePairs(“format1”,eFormat.getText().toString());//您可以根据需要添加任意数量的
添加(新的BasicNameValuePair(“name1”,eName.getText().toString());
添加(新的BasicNameValuePair(“price1”,ePrice.getText().toString());
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://MY_SITE.com/my.php");
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpClient.execute(httpPost);
HttpEntity=response.getEntity();
//is=entity.getContent();
Log.d(“调试”,“结束尝试”);
}捕获(例外e){
//TODO:处理异常
Log.e(“Log_标记”,e.toString());
//返回false;
//Toast.makeText(例如toString(),Toast.LENGTH_LONG).show();
}
}
}).start();
这就是我添加的代码。我知道我可以很好地连接到数据库,因为我用来搜索数据库的代码工作正常,但由于某种原因,我的add出错了。我已经在一个新线程中运行了代码,因为前几天我了解到不能在程序的主线程中执行这些http请求。我一直在到处寻找答案,但还没有找到答案,也许我只是漏掉了一行,非常感谢您的帮助。显然代码中没有显示错误。要逐行调试更多代码,您应该修改PHP代码并重试-
<?php
mysql_connect("host","login","pass") or die ("Unable to connect to MySQL");
mysql_select_db("database");
echo $_REQUEST['number1'];
echo $_REQUEST['format1'];
echo $_REQUEST['name1'];
echo $_REQUEST['price1'];
$sql = "INSERT INTO Table (number, format, name, price) VALUES ('".$_REQUEST['number1']."', '".$_REQUEST['format1']."', '".$_REQUEST['name1']."', '".$_REQUEST['price1']."')";
echo $sql;
mysql_query($sql) or die(mysql_error());
mysql_close();
?>
显然,它没有显示代码错误。要逐行调试更多代码,您应该修改PHP代码并重试-
<?php
mysql_connect("host","login","pass") or die ("Unable to connect to MySQL");
mysql_select_db("database");
echo $_REQUEST['number1'];
echo $_REQUEST['format1'];
echo $_REQUEST['name1'];
echo $_REQUEST['price1'];
$sql = "INSERT INTO Table (number, format, name, price) VALUES ('".$_REQUEST['number1']."', '".$_REQUEST['format1']."', '".$_REQUEST['name1']."', '".$_REQUEST['price1']."')";
echo $sql;
mysql_query($sql) or die(mysql_error());
mysql_close();
?>
我建议您首先开发一个简单的html表单,以确保您在php方面不会遇到这样的问题
<html xmlns='http://www.w3.org/1999/xhtml'>
<head >
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<title >Form Page: sampleform</title>
</head>
<body>
<h1>Sample form page</h1>
<form id='sampleform' method='post' action='http://MY_SITE.com/my.php' >
<p>
number1: <input type='text' name='number1' />
</p>
<p>
format1: <input type='text' name='format1' />
</p>
<p>
name1: <input type='text' name='name1' />
</p>
<p>
price1: <input type='text' name='price1' />
</p>
<p>
<input type='submit' name='Submit' value='Submit' />
</p>
</form>
</body>
</html>
表格页:样本表格
示例表单页
第一:
格式1:
名称1:
价格1:
运行此快速测试并让我知道。以便我能进一步帮助你
编辑:
对。问题可能出在insert语句中。请尝试使用以下代码
<?php
$mysqli = new mysqli("Your host", "Db username", "Db password", "Db name");
if ($mysqli->connect_errno) {
echo "Couldn't connect to database";
}
$number = $mysqli->real_escape_string($_POST['number1']);
$format= $mysqli->real_escape_string($_POST['format1']);
$name= $mysqli->real_escape_string($_POST['name1']);
$price= $mysqli->real_escape_string($_POST['price1']);
$query = "INSERT INTO Table (number, format, name, price) VALUES('$number','$format','$name', '$price');";
$result = $mysqli->query($query);
if($result)
{
echo "Successfully inserted";
}
?>
我建议您首先开发一个简单的html表单,以确保您在php方面不会遇到这样的问题
<html xmlns='http://www.w3.org/1999/xhtml'>
<head >
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<title >Form Page: sampleform</title>
</head>
<body>
<h1>Sample form page</h1>
<form id='sampleform' method='post' action='http://MY_SITE.com/my.php' >
<p>
number1: <input type='text' name='number1' />
</p>
<p>
format1: <input type='text' name='format1' />
</p>
<p>
name1: <input type='text' name='name1' />
</p>
<p>
price1: <input type='text' name='price1' />
</p>
<p>
<input type='submit' name='Submit' value='Submit' />
</p>
</form>
</body>
</html>
表格页:样本表格
示例表单页
第一:
格式1:
名称1:
价格1:
运行此快速测试并让我知道。以便我能进一步帮助你
编辑:
对。问题可能出在insert语句中。请尝试使用以下代码
<?php
$mysqli = new mysqli("Your host", "Db username", "Db password", "Db name");
if ($mysqli->connect_errno) {
echo "Couldn't connect to database";
}
$number = $mysqli->real_escape_string($_POST['number1']);
$format= $mysqli->real_escape_string($_POST['format1']);
$name= $mysqli->real_escape_string($_POST['name1']);
$price= $mysqli->real_escape_string($_POST['price1']);
$query = "INSERT INTO Table (number, format, name, price) VALUES('$number','$format','$name', '$price');";
$result = $mysqli->query($query);
if($result)
{
echo "Successfully inserted";
}
?>
您的PHP脚本是否收到了正确的值?我相信是的,我有那些Log.d命令来确保我从文本框中解析了正确的值,有没有办法实际查看发送给PHP脚本的内容?我想我可以在我的php脚本中打印出存储在number1、format1等格式中的内容?对所有字符串变量'“$\u REQUEST['name1']”进行引用。
并将PDO或mysqli与准备好的语句一起使用。不要将请求直接传递到查询中。您可以接受sql注入。试一试您的PHP脚本是否接收到正确的值?我相信是的,我有那些Log.d命令来确保我从文本框中解析正确的值,是否有办法实际查看发送到PHP脚本的内容?我想我可以在我的php脚本中打印出存储在number1、format1等格式中的内容?对所有字符串变量'“$\u REQUEST['name1']”进行引用。
并将PDO或mysqli与准备好的语句一起使用。不要将请求直接传递到查询中。您可以接受sql注入。请在我运行android应用程序时尝试,如果页面上打印了什么内容,请刷新我的php页面,因为网页上似乎没有回音。当我运行android应用程序,如果页面上打印了什么内容,请刷新我的php页面,因为网页上似乎没有回音。我运行了这段代码,当我点击submit时,它只打印了项目,可能来自我在php代码中的回音语句,我在文本框中写入,实际上没有向数据库添加任何内容。但是,既然打印了正确的项目,那就意味着php代码接收到了正确的信息,对吗?我的INSERT语句可能有问题,因为php得到了正确的信息。如果您能尽快回复我,情况会更好。不管怎样,我的答案被修改了。检查它并让我尽快知道。这解决了它:D为什么我不能用我原来的intsert完成它?我运行了这段代码,当我点击submit时,它只打印了项目,可能是f