使用java和php插入mysql:没有错误但没有插入

时间:2012-11-11 12:24:51

标签: java php android mysql insert

我有一个Android java方法,它调用远程php将数据插入到mysql表中。

这是 java代码客户端:

public static void insert(String email1, String email2) {
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("email1", email1));
    nameValuePairs.add(new BasicNameValuePair("email2", email2));

    try {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("myserver:8080/insert.php");
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    //How to catch and print php echo() here??
}

这是 insert.php 服务器端(重新编辑):

<?php   
    $mysqli_connection = new mysqli("localhost:3306", "root", "password", "mydb");
    if ($mysqli_connection->connect_errno) {
        echo ("Connection Failure");
        exit();
    }


    $stmt = $mysqli->stmt_init();
    if ($stmt->prepare("INSERT INTO `mytable` (`email1`, `email2`) VALUES (?,?)")) {
        echo 'Success';
        $stmt->bind_param("ss", $_GET['email1'], $_GET['email2']);
        $stmt->execute();
        $stmt->close();
    } else {
        echo 'Error Inserting Content';
    }

    $mysqli->close();   
?>

当我调用我的java insert()方法时,没有返回异常,但没有插入,mytable为空。

  • 1)出了什么问题?
  • 2)如何查看发生了哪些错误?我怎样才能看到php端执行的“日志”?

非常感谢你。 Geltry

2 个答案:

答案 0 :(得分:3)

使用backtick代替列名和/或tableNames的单引号

INSERT INTO mytable(`email1`,`email2`) VALUES('$email1','$email2')

你什么时候使用反击?

例如,

CREATE TABLE `hello word`(`Record ID` INT,....)

并且您的查询易受SQL Injection攻击,请花些时间阅读以下文章

答案 1 :(得分:1)

查看您的HttpResponse/HttpEntity。你应该看到'成功'或'插入内容错误'。您还可以在回复中添加具体的errnoerror字符串,以查看哪些内容确实存在问题。

您还可以在请求中混合使用HTTP POST和HTTP GET。在客户端,您使用HttpPost对象,在服务器端,您希望设置_GET变量。您必须在两个侧使用GET或POST。否则客户端和服务器将无法相互理解。

使用HttpEntity.getContent(),您可以阅读InputStream。另一种方法是使用EntityUtils.toString()来获取响应内容的字符串表示。