【问题标题】:how to send data from java to php then to mysql data base如何将数据从java发送到php然后到mysql数据库
【发布时间】:2015-03-08 13:26:33
【问题描述】:

我正在尝试将数据从 java 发送到 php,然后从 php 发送到 mysql 数据库,所以这是我的 php 代码:

         <!DOCTYPE html >
         <html >
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Document sans titre</title>
        </head>

          <body>
       <?php
            require_once('conn.php');
            mysql_select_db($db)or die('ERREUR'.mysql_error());
            extract($_POST);


          $req="insert into `fdt_tab`               values(null,'".$date."','".$kpi_category."','".$kpi_indicator."','".$kpi_image."')";
          mysql_query($req)or die (mysql_error()."\n".$req);
          mysql_close();
          echo " Insertion faite avec succés !! " ;?>
          </body>
         </html>

这是我的 java 代码: 试试 {

                        URL url = new URL("http://localhost/fdt/inser.php");

                        PhpPostConnect con = new PhpPostConnect(url);

                        System.out.println("la connexion est faite avec succés!!");
                        try
                        {


                            con.send("5"+"02/02/2015"+"categorie"+ "cssr"+"CSSR_PS.png");

                            String meldung = con.read();
                             System.out.println(meldung);      
                                    if(meldung.contains("OKAY"))
                            {
                               System.out.println(meldung);

                            }
                        }
                        catch (IOException e)
                        {
                            e.printStackTrace(); 
                        }
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    }

我用这个link写了这段代码 当我想在我的数据库中插入数据时,我发现我的数据库中添加了一个空的 ligne 的问题!

【问题讨论】:

  • 为什么要通过 PHP 来做,而不是直接从 Java 写入数据库?
  • 这是我教授的指示 :(

标签: java php mysql


【解决方案1】:

发送POST数据时,预期的信息格式为:

name1=value1&name2=value2&name3=value3...

其中name1name2name3 是参数的名称,value1value2value3 是这些参数的值。名称和值应为url-encoded。因此,例如,一个值如H&amp;M 的参数“storeName”应该作为storeName=H%26M 发送。

问题是你没有这样做。您只需将所有参数的值连接起来并像这样发送它们:

con.send("5"+"02/02/2015"+"categorie"+ "cssr"+"CSSR_PS.png");

这会将502/02/2015categoriecssrCSSR_PS.png 发送到服务器。 PHP 脚本看到了这一点,它无法正确地将其分解为参数,因此您最终会发现所有参数都未定义。在 PHP 中,这意味着当你在$req SQL 字符串中使用它们时,它们都是空的。

您需要在 PHP 中添加您期望的参数名称(datekpi_category 等),并使用 URL 编码的值格式化我上面提到的整个数据(例如,您不能将 02/02/2015 作为值发送。/ 是保留字符,必须进行百分比编码)。


附加建议:您的 PHP 脚本确实非常不安全。永远不要使用extract。这是非常不安全的。任何人都可以通过将变量作为参数发送给您来设置程序中的任何变量。键入可能很烦人,但始终将变量用作$_POST['var_name'](或$_REQUEST['var_name'] 等),并且如果您愿意,可以使用=,而不是extract,仅将您需要的变量放入变量中。

此外,请检查您需要的每个变量是否已通过:已设置、不为空且包含合理的值。

您从参数中获得的所有字符串,并且应该被数据库使用,都应该被转义,因为您不知道是否有人会尝试破解您的程序并向您发送包含单个字符串的字符串引用。这会破坏你的 SQL。在 MySQL 中使用mysql_escape_string( $_POST['var_name']) 转义字符串。

【讨论】:

  • @jiji 那么请考虑将答案标记为“已接受”。
猜你喜欢
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
相关资源
最近更新 更多