mysql查询语句错误

会飞的云 发布于 2014/10/03 16:26
阅读 601
收藏 0

php代码:

function db_search31($d_method1,$d_method2) {

    $row1 = array();
    $greeting ="SELECT ".$d_method1." FROM table_it where title = ('$d_method2');";
    $result = mysql_query($greeting)or die('Could not connect:'. mysql_error());

     $i=0;
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)){

        $row1[$i]=$row['content'];

        ++$i;
    }
   

    return $row1;

}


$d_method1,$d_method2是从Android端传过来的数据

    结果再返回给Android端   但是收到的是空字符串??   为什么

我可以确定的是和Android端无关那边是正确的 问题出在:

    $greeting ="SELECT ".$d_method1." FROM table_it where title = ('$d_method2');";这句。

怎样写才是正确的MySQL语句?


加载中
0
欲望故事
欲望故事
SQL语句看不出来什么问题,建议用断电调试一下
会飞的云
会飞的云
哦 我再想想
0
樂天
樂天
echo $greeting;

看看生成的SQL语句能不能在命令行中正确执行。。。

会飞的云
会飞的云
回复 @樂天 : 我先试试 我感觉是那个SQL语句的问题 查询数字没问题但是汉字和字符结果就是空
樂天
樂天
回复 @会飞的云 : 这样的话,那就很可能android程序给php程序的参数有问题,可以查看一下当android连接你的程序时,$greeting的具体内容是什么。将$greeting的内容写入文件就可以测试了。
会飞的云
会飞的云
我用php测试那个函数能正确返回 但是Android端发过来的同样的数据就没法了返回了 返回的是一个空
0
樂天
樂天

引用来自“樂天”的评论

echo $greeting;

看看生成的SQL语句能不能在命令行中正确执行。。。

汉字有问题,那么可能是因为没有执行 set names utf8

http://shanxidongzenghui.blog.163.com/blog/static/10140608020105544533231/
会飞的云
会飞的云
回复 @樂天 : 传上来的MySQL语句多了一个空格: SELECT content FROM table_it where `title` = ' 测试' 已经解决了 谢谢
会飞的云
会飞的云
回复 @樂天 : http包(放不下我删了一些不重要的): <?xml version="1.0" encoding="UTF-8"?> <item xsi:type="xsd:string">数字</item><item xsi:type="xsd:string">数字</item> 这是请求后收到的结果 都没问题 但是就是Android访问的时候返回的是空
会飞的云
会飞的云
回复 @樂天 :我到MySQL里执行也没问题 编码都是utf-8 但是网页显示用print_r()打印出来的数组是: Array ( [0] => ?? [1] => ?? )
会飞的云
会飞的云
回复 @樂天 : echo的结果没有问题 SELECT content FROM table_it where title = '数字';
0
LuckyWiky
LuckyWiky
看了上面的情况,可能是你PHP文件编码的问题
会飞的云
会飞的云
回复 @LuckyWiky : 传上来的MySQL语句多了一个空格: SELECT content FROM table_it where `title` = ' 测试' 已经解决了 谢谢
LuckyWiky
LuckyWiky
回复 @会飞的云 : 你可以看看mysql 的查询日志,看下当时参数的值是什么,或许有用
会飞的云
会飞的云
@LuckyWiky :编码都是charset=utf-8 设了的
0
樂天
樂天

引用来自“樂天”的评论

echo $greeting;

看看生成的SQL语句能不能在命令行中正确执行。。。

引用来自“樂天”的评论

汉字有问题,那么可能是因为没有执行 set names utf8

http://shanxidongzenghui.blog.163.com/blog/static/10140608020105544533231/
先把php加上set names utf8:
function db_search31($d_method1,$d_method2) {
    $row1 = array();
    $greeting ="SELECT ".$d_method1." FROM table_it where title = ('$d_method2');";
    
 
    mysql_query("SET NAMES UTF8");  //添加的语句
    $result = mysql_query($greeting)or die('Could not connect:'. mysql_error());

    $i=0;
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)){

        $row1[$i]=$row['content'];

        ++$i;
    }
   

    return $row1;

}



测试php的输出,需要在html中加上:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">



另外,保证所有的文件都是utf-8编码。

然后在网页上测试当 $d_method2是数字、英文、中文时候的输出。另外,为了调试,最好也能把 $d_method2、生成的sql语句等输出到网页。

如果以上没有问题,也可能是android程序没有处理好编码,可以参考:
http://www.cnblogs.com/ggzjj/archive/2013/04/03/2997223.html

0
南湖船老大
南湖船老大
android不是Java写的吗?Java中的默认编码不是ISO-88591吗?
会飞的云
会飞的云
回复 @南湖船老大 : 传上来的MySQL语句多了一个空格: SELECT content FROM table_it where `title` = ' 测试' 已经解决了 谢谢
会飞的云
会飞的云
回复 @南湖船老大 : androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); android 我也尝试设置了
南湖船老大
南湖船老大
回复 @会飞的云 : 是你安卓那没处理好编码
会飞的云
会飞的云
回复 @南湖船老大 :传送http包的时候不是可以设格式为什么 上面发的代码都是php那边的
返回顶部
顶部