我写了一个简单的PHP脚本,它将接收一个JSON数组(所以我认为),它会将接收到的数组添加到MySQL数据库中。但是,当我调用脚本时,它只将数组中的最后一项添加到数据库中。这里有什么简单的东西我不见了吗?
另外,我的TRUNCATE TABLE无法从表中删除任何内容。
<?php
$handle = mysql_connect('localhost','root','');
if($handle==false)
{
die('No database connection');
}
$result = mysql_query("TRUNCATE TABLE 'available_ingredients'");
$db=mysql_select_db('r2bar2');
$query='INSERT INTO available_ingredients (drink_name) VALUES ("'.$_POST["drink_name"].'")';
$result=mysql_query($query);
?>
编辑: 下面是生成JSON数组的代码
ArrayList<NameValuePair> j2 = new ArrayList<NameValuePair>();
j2.add("drink_name", "rootbeer")
j2.add("drink_name", "pepsi")
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(my url);
httppost.setEntity(new UrlEncodedFormEntity(j2));
HttpResponse response = httpclient.execute(httppost);
responseText = EntityUtils.toString(response.getEntity())
答案 0 :(得分:0)
TRUNCATE TABLE
不需要或想要围绕表名称使用单引号$_POST
完全包含的内容,因此我们无法说明究竟发生了什么你应养成从你调用错误的函数中检查所有返回值的习惯(就像你已经使用mysql_connect
一样);这将导致您发现为什么TRUNCATE TABLE立即失败。
答案 1 :(得分:0)
使用json_decode查看PHP如何接收json对象。在Android方面,你应该只使用你的json数据发送一个变量。
即。 data ='... json string goes here ..'(伪代码,因为我不知道你是如何在android中做的。想法是你要向PHP发送1个键/值,键是数据,并且值是json字符串中的所有值。)
然后在PHP中,如果你通过POST发送,那么你可以这样得到它:
注意,删除truncate table查询,正如其他人提到的那样,它正在擦除整个表。
此代码应该回答您的主要问题。
<?php
// decode json string
$data = json_decode($_POST['data']);
// sanitize your input to avoid sql injection like others have mentioned
$safe_drink_name = mysql_real_escape_string($data->drink_name);
.... // your mysql connect code
$query='INSERT INTO available_ingredients (drink_name) VALUES ("'.$safe_drink_name.'")';
?>