ホームページ  >  記事  >  バックエンド開発  >  PHP は正しいですが、WeChat に接続すると配列のみが返されます。

PHP は正しいですが、WeChat に接続すると配列のみが返されます。

WBOY
WBOYオリジナル
2016-06-20 12:44:44907ブラウズ

133986e0c68d68155c232c71b6210b08
これを使用すると、PHP は正しいですが、WeChat を受信すると、別の返信配列になります


ディスカッション (解決策) に返信

データを文字列に連結するか、json にエンコードします

return json_encode($ res) ;

return json_encode($res);



これも機能しません、返信は文字化けします

誰か知っていますかそれをマスターするには?

echo json_encode の前に、 header('Content-type:application/json;charset=utf-8');

echo json_encode の前に追加します。 : header( 'Content-type:application/json;charset=utf-8');


$sql = "select * FROM `record` WHERE title like '%$keyword%'"; $ result = mysql_query($ sql、$ link); mysql_close($link);
} 今回返される値は、echo の []


です。 json_encode の前に、header('Content-type:application/json;charset=utf-8) を追加します。 ');

これはエラーですか? b2a0af5a8fd26276da50279a1c63a57a
ea5d8177d19f22584533e5c37c389942d3242fa0f72a59f12bbb2807edba61b76671a89dce89e879d9e9c6d81d03862b
c5123754d1f4829fae4905e8abb602f9d3242fa0f72a59f12bbb2807edba61b7 FromUserName>
246311df1688542638dc52b54a1a4c87%se660f1169ff44ea75c5a982fcb1cde61
42815c2206ae835d7fd68cb4ae21e4dfd3242fa0f72a59f12bbb2807edba61b7
ea63b4477034504a08070acf4e0b68b2527eaaf694bf8031cf1227eaf270399faa91fa7c40b1cd973268e154dae1a50e
c16e87311aa318186a2141a5b8ce55110fecc2d83bf66fbc799a88f710e0cd251
21118965b89073f60271ef4a3b5d3c58 を追加します: header('Content-type:application/json ;charset=utf-8');

$sql = 「select * FROM `record` WHERE title like '%$keyword%'";
$result = mysql_query($sql, $link); // 执行句询语


$res=array();

while($row = mysql_fetch_array($result))
{



$res[]=$row["title"];



header('Content-type:application/json;charset=utf-8');
return json_encode($res);
mysql_close($link);        
} 次の返還は[]
返還は空ですか? 🎜> echo json_encodeの前,加上:header('Content-type:application/json;charset=utf-8');

会わないのはこれですか?b2a0af5a8fd26276da50279a1c63a57a

ea5d8177d19f22584533e5c37c389942d3242fa0f72a59f12bbb2807edba61b76671a89dce89e879d9e9c6d81d03862b

c5123754d1f4829fae4905e8abb602f9d3242fa0f72a59f12bbb2807edba61b742a4b8d57eb0afadcf16b7a02c69caaf
246311df1688542638dc52b54a1a4c87%se660f1169ff44ea75c5a982fcb1cde61

42815c2206ae835d7fd68cb4ae21e4dfd3242fa0f72a59f12bbb2807edba61b7698463fc03844fbe5a9caafaa1ebd0b1
322ea5fcc94ab58d4f225e1fa91c47cfd3242fa0f72a59f12bbb2807edba61b7a1366ce296fa6074cbbef2f21ab6723a
0



は、0 を削除します。




在echo json_encode之前,加上:header('Content-type:application/json;charset=utf-8');

$sql = 「select * FROM `record` WHERE title like '%$keyword%'";
$result = mysql_query($sql, $link); // 执行句询语


$res=array();

while($row = mysql_fetch_array($result))
{



$res[]=$row["title"];



header('Content-type:application/json;charset=utf-8');
return json_encode($res);
mysql_close($link);        
} 次の戻り値は[]
戻り値は空ですか?
申し訳ありませんが、今間違ったコメントをしてしまいました。
何が間違っているのか全く分かりません

a4f8f17ec289065b2d3b42b93d80a5c6checkSignature()){
echo $echoStr;
exit; exit
}
}

public function responseMsg()
{
//投稿データを取得します。環境が異なる可能性があります。
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]

//投稿データを抽出します
if (!empty($postStr) )){

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName;時間();                $textTpl = "b2a0af5a8fd26276da50279a1c63a57a
ea5d8177d19f22584533e5c37c389942d3242fa0f72a59f12bbb2807edba61b76671a89dce89e879d9e9c6d81d03862b
c5123754d1f4829fae4905e8abb602f9246311df1688542638dc52b54a1a4c87%se660f1169ff44ea75c5a982fcb1cde61
42815c2206ae835d7fd68cb4ae21e4df546a4b81c2becda55d8d687cd13a308f698463fc03844fbe5a9caafaa1ebd0b1 d3242fa0f72a59f12bbb2807edba61b7aa91fa7c40b1cd973268e154dae1a50e

21118965b89073f60271ef4a3b5d3c58             
if(!empty($keyword ))


{
$msgType = "text";

$contentStr= chaxun($keyword);

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;

}else{
echo "何かを入力してください...";
}

}else {
echo "";
終了します。
}
}

private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];

$token = トークン;
$tmpArr = array($token, $timestamp, $nonce);
ソート($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}

?>



在echo json_encode之前,加上:header('Content-type:application/json;charset=utf- 8');

$sql = 「select * FROM `record` WHERE title like '%$keyword%'";
$result = mysql_query($sql, $link); // 执行句询语


$res=array();

while($row = mysql_fetch_array($result))
{



$res[]=$row["title"];



header('Content-type:application/json;charset=utf-8');
return json_encode($res);
mysql_close($link);        
} 次の戻り値は[]


戻り値は空ですか?



在echo json_encode之前,加上:header('Content-type:application/json;charset=utf-8');


$sql = 「select * FROM `record` WHERE title like '%$keyword%'";
$result = mysql_query($sql, $link); // 执行句询语


$res=array();

while($row = mysql_fetch_array($result))
{



$res[]=$row["title"];



header('Content-type:application/json;charset=utf-8');
return json_encode($res);
mysql_close($link);        
} 次の戻り値は[]
戻り値は空ですか?
数据库的是这样的

你的表字段是UTF-8,所以应该 mysql_query("set names utf8",$link); 

另外,有个地方稍微改下(改不改都行,不过echo的数据都应该是XML格式的):

if(!empty($keyword )){	$msgType = "text";        	$contentStr = chaxun($keyword);	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);    echo $resultStr;}else{	$msgType = "text";  	$contentStr = "input something...";    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);    echo $resultStr;}

你的表字段是UTF-8,所以应该 mysql_query("set names utf8",$link); 

另外,有个地方稍微改下(改不改都行,不过echo的数据都应该是XML格式的):

if(!empty($keyword )){	$msgType = "text";        	$contentStr = chaxun($keyword);	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);    echo $resultStr;}else{	$msgType = "text";  	$contentStr = "input something...";    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);    echo $resultStr;}


都改了,还是不行,烦死了,用return返回array,用echo 回复公众号暂停服务

1、你是在做微信应用,而微信都是 utf-8 编码的
所以你 mysql_query("set names GBK",$link); 是不对的
要 mysql_query("set names utf8",$link);
2、你把传入的 utf-8 数据 $keyword 当做 gbk 解释
这就造成了 chaxun 函数返回空数组
当然确实不存在的时候,也是返回空数组的
3、由
$contentStr= chaxun($keyword); 
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
可知,$contentStr 应是一个字符串,而 chaxun 返回的是数组,所以可能需要
$contentStr = json_encode(chaxun($keyword));

$contentStr = join(',', chaxun($keyword));

1、用echo 回复公众号暂停服务====》可能是代码有语法错误或者error,在你的域名里运行这个脚本看看有没有报错。
2、试一下,不进行查找数据库,直接让$contentStr = "字符串";然后echo $resultStr;  看看是不是数据取出问题

1、用echo 回复公众号暂停服务====》可能是代码有语法错误或者error,在你的域名里运行这个脚本看看有没有报错。
2、试一下,不进行查找数据库,直接让$contentStr = "字符串";然后echo $resultStr;  看看是不是数据取出问题


问题解决了,谢谢你,大师傅

1、你是在做微信应用,而微信都是 utf-8 编码的
所以你 mysql_query("set names GBK",$link); 是不对的
要 mysql_query("set names utf8",$link);
2、你把传入的 utf-8 数据 $keyword 当做 gbk 解释
这就造成了 chaxun 函数返回空数组
当然确实不存在的时候,也是返回空数组的
3、由
$contentStr= chaxun($keyword); 
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
可知,$contentStr 应是一个字符串,而 chaxun 返回的是数组,所以可能需要
$contentStr = json_encode(chaxun($keyword));

$contentStr = join(',', chaxun($keyword));


大师啊,大师啊,解决了,佩服啊 
太感谢了
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。