java php mysql_使用PHP从Java连接到MySQL

我在Java,PHP和MySQL之间有一个奇怪的连接问题.

我无法通过Java直接访问Web服务器上的MySQL数据库.因此,我将机制转换为运行PHP脚本,该脚本为我完成工作并将结果返回给我的Java应用程序.

它对大多数查询都很好.但是当查询包含查询中的字符字段时,我没有得到预期的结果.

我包含PHP和Java代码片段以供参考.

请找我,我做错了…

服务器上的PHP脚本……

$query=$_POST["query"];

echo" Query = ".$query."\n";

if($query){

$link=mysql_connect("mysql2.000webhost.com","a7946109_other","mypassword");

if($link){

mysql_select_db("a7946109_other");

$result=mysql_query($query);

if($result){

while($row=mysql_fetch_row($result)){ // for each row in results

foreach($row as $value){ // for each column in row

echo "\t".$value;

}

echo"\n";

}

}

}else{

echo " MySQL connect failed ! \n";

}

}else{

echo " No Query ! \n";

}

exit(); // exit without auto_append_file

?>

Java程序……

import javax.swing.*;

import java.awt.*;

import java.io.*;

import java.net.*;

import java.applet.*;

import java.security.*;

public class MySQL_POST {

public static void main(String r[]){

HttpURLConnection conn=null;

try{

URL url=new URL("mywebsite.com/postdb.php");

String agent="Applet";

String query="query=" + r[0];

String type="application/x-www-form-urlencoded";

conn=(HttpURLConnection)url.openConnection();

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setRequestMethod("POST");

conn.setRequestProperty( "User-Agent", agent );

conn.setRequestProperty( "Content-Type", type );

conn.setRequestProperty( "Content-Length", ""+query.length());

OutputStream out=conn.getOutputStream();

out.write(query.getBytes());

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String inputLine;

while((inputLine=in.readLine())!=null){

System.out.print(inputLine+"\n");

};

in.close();

int rc = conn.getResponseCode();

System.out.print("Response Code = "+rc+"\n");

String rm=conn.getResponseMessage();

System.out.print("Response Message = "+rm+"\n");

}catch(Exception e){

e.printStackTrace();

}finally{

conn.disconnect();

}

}

}

我有一个名为TEST的表,其中包含字段SID INT(3),SNAME VARCHAR(20),SLNAME VARCHAR(20)

它在表中有两个条目.

当我使用Java执行以下查询时,我得到不同类型的输出,如下所示.

> java MYSQL_POST "SELECT * FROM TEST"

Query = SELECT * FROM TEST

1 Test1 Test1L

2 Test2 Test2L

Response Code = 200

Response Message = OK

这是我想要的.

> java MYSQL_POST "SELECT SNAME FROM TEST WHERE SID = 1"

Query = SELECT SNAME FROM TEST WHERE SID = 1

Test1

Response Code = 200

Response Message = OK

这也是我的预期.

这是奇怪的.

> java MYSQL_POST "SELECT SID FROM TEST WHERE SNAME = 'Test1'"

Query = SELECT SID FROM TEST WHERE SNAME = \'Test1\'

Response Code = 200

Response Message = OK

这不会导致任何结果,如预期的那样应为1

查询,涉及SNAME =’Test1’等字符或任何其他或不工作的字符.除了这些查询,其他人都没问题.

请有人帮我解决这个问题.

提前致谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值