我正在尝试将数据从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 !!
答案 0 :(得分:0)
发送POST数据时,预期的信息格式为:
name1=value1&name2=value2&name3=value3...
name1
,name2
,name3
是参数的名称,而value1
,value2
和value3
是值那些参数。名称和值应为url-encoded。因此,例如,参数&#34; storeName&#34;像H&M
这样的值应该以{{1}}发送。
问题在于你没有这样做。您只需连接所有参数的值并将其发送如下:
storeName=H%26M
这会将con.send("5"+"02/02/2015"+"categorie"+ "cssr"+"CSSR_PS.png");
发送到服务器。 PHP脚本可以看到它,并且它无法正确地将其分解为参数,因此您最终会得到所有未定义的参数。在PHP中,这意味着当您在502/02/2015categoriecssrCSSR_PS.png
SQL字符串中使用它们时,它们都是空的。
您需要在PHP($req
,date
等)中按预期添加参数的名称,并格式化上面提到的整个数据,并使用URL编码的值(例如,您无法将kpi_category
作为值发送。02/02/2015
是保留字符,必须进行百分比编码。
其他建议:您的PHP脚本真的非常不安全。不要使用/
。这非常不安全。任何人都可以通过将该变量作为参数发送给程序中的任何变量。输入可能很烦人,但总是将变量用作extract
(或$_POST['var_name']
等),如果你想使用$_REQUEST['var_name']
,只需要在变量中使用变量,而不是=
。
另外,检查您所需的每个变量是否已经传递:设置,不为空,并且包含合理的值。
您从参数中获取并且应该由数据库使用的所有字符串都应该被转义,因为您不知道是否有人会试图破解您的程序并向您发送包含的字符串单引号。这会打破你的SQL。使用extract
来转义MySQL中的字符串。